2017-01-13 5 views
0

私の考えは、これらの呼び出しの前後に関数を挿入し、その関数が時間を測定してデータを収集することです。私はこの例の後に別のCファイルに関数を書いていますhttps://github.com/sampsyo/llvm-pass-skeleton/tree/rtlib。ここに私の質問があります:特定の関数呼び出しにかかる時間を測定するLLVMパス

1-外部機能はCでなければなりませんか? 2同じ/類似の仕事をする既存のプロジェクトはありますか? 3 LLVMが組み込まれているか、ソースから外れていると違いはありますか?

ありがとうございました! :)

答えて

1

(これは計測ツールを開発した私の経験であるContechに基づいています)。

  1. 外部機能は、プロジェクトにリンクするだけで済みます。私は、C言語で計装関数を記述するのが最も簡単だが、別の言語を好むかもしれません。他の言語は異なる命名規則や呼び出し規約に従うことに注意してください。
  2. ContechとHarmonyの両方にこれを行う機能があります。 Contechは特に時間と同期機能のコストを記録します。
  3. 私はContechを、LLVMバイナリがプリインストールされていることと、ソースからビルドすることの両方をうまく実行しました。

計測器の基本的な考え方は、関数呼び出しを行う前に開始時刻を収集することです。復帰後、この開始時間をフォローアップ計測ルーチンに渡すことができます。これらのイベントの頻度に応じて、計測器はレコードをバッファに格納するか、処理を別のスレッドに渡すことも推奨されます。

関連する問題