2

プログラムのプロファイリングがどのように機能するかを理解しようとしています。ヴァルグリンドを使用しています。私の最初の質問は次のとおりです。

関数のコストは Valgrind にとって何を意味しますか? 時間ですか?

私が読んだところによると、Valgrind は「汎用コンピューター」をミラーリングする仮想マシンでプログラムを実行しているようです。次に、このマシンで発生するイベントをカウントします。しかし、このデータから関数のコストをどのように計算するのでしょうか? 標準的なデスクトップ PC で 1 ミリ秒未満の時間を測定できますか?

ここに画像の説明を入力

編集:

callgrind の出力で、1 次元の数値「コスト」は何を意味しますか?

4

2 に答える 2

7

関数のコストは Valgrind にとって何を意味しますか? 時間ですか?

Cachegrind および Callgrind ツールについて言及していると仮定すると、それらは「コスト」を測定しません。シミュレートされたプロセッサでプログラムを実行して収集した特定の統計を測定します。

  • キャッシュの読み取りとミス
  • 条件分岐と間接分岐の実行と予測ミス

詳細については、ドキュメントを参照してください。

他のプロファイラーは、各関数の経過時間を測定したり、サンプリングを使用して、プログラムが最も多くの時間を費やした関数を特定したりします。

標準的なデスクトップ PC で 1 ミリ秒未満の時間を測定できますか?

はい、ほとんどの最新のコンピューターには 1 マイクロ秒未満の精度のタイマーがあり、最新の Intel プロセッサでは CPU サイクルをカウントできます。しかし、シミュレートされたマシンでは意味がないため、Valgrind は経過時間を測定しません。

于 2013-01-24T16:56:46.607 に答える
1

はい、時間は標準のデスクトップ PC (Intel プロセッサを搭載している場合) で 1 ミリ秒未満で測定できます。これを行うと呼ばれるアセンブリ命令がありrtdscます。

于 2013-01-24T16:55:31.883 に答える