動的プロファイリングに使用できる最速のプロファイラーは何ですか (gprof のように)。プロファイラーはインストルメンテーション プロファイラーである必要があります。または、サンプリング プロファイリングが含まれている場合でも、サンプリング プロファイリングはほぼ 0% のオーバーヘッドで実行できるため、インストルメンテーション プロファイリングのオーバーヘッドを知りたいと思っています。
2 に答える
ハードウェア ベースのサンプリング (CPU PMSR 経由) を使用するプロファイラーは、オーバーヘッドが最小になります (CPU がハードウェア レベルで追跡しているプロファイリング データを読み取るため、詳細については、AMD および Intel アーキテクチャのマニュアルを参照してください。付録の 1 つで詳細に説明されています)。
私が知っているこれらのプロファイラーは、Intel 用のVTune (無料ではない) とAMD 用のCodeAnalyst (無料) だけです。
次は、タイマー ベースのプロファイラーとイベント ベースのプロファイラーです。これらのうち、オーバーヘッドが最も少ないのは、おそらくコードに直接コンパイルされるものです (CodeAnalyst にはイベント ベースの API があり、VTune にもあります)。gprofもこのカテゴリに分類されます (Clang には、まだ維持されている場合は IDK 以外のものもあります...)。VS Pro または Ultimate を使用している場合、その PG コンパイル モードは同様のことを行いますが、専用のプロファイラー スイートと比較したことはありません。
最後は、プロファイリング データを決定するためにコードにプローブを挿入する必要があるものです。前述のものはすべて、VerySleepy などの他のフリーウェア プロファイラーと同様に、これを行うことができます。
Intel のvtune アンプは、おそらく最も完成度の高いものです。