質問

多くの静的および動的計測ツールがあります。すすは、Javaバイトコードの静的インスツルメンテーションツールです。ピンとValgrindのは、バイナリの動的計測ツールです。

静的および動的計測ツールの長所と短所は何ですか?私は、動的なツールがより強力であるのに対し、静的インスツルメンテーション・ツールは、実行時のパフォーマンスの面で優れていると思います。能力とパフォーマンスの面でそれらを比較してください。

プラス、LLVMが通過書いてから計測ツールを使用しての違いは何ですか?

役に立ちましたか?

解決

私は必要性が大幅に時間がかかるコードを発見することであり、あなたがその時間を節約するために最適化することができると仮定しています。それはちょうどタイミングルーチンは異なる目標です。

すべてが入力データミックスに依存しているため、私は、静的解析装置の懐疑的だ。

自己時間との合計時間、絶対的、平均、およびパーセント:

動的計測は、次のような機能の特性を測定しようとします。また、カウントを呼び出し、コールグラフ内の各ルーチンの役割ます。

ダイナミック計測機器(ア・ラ gprofのを)持っています数十年のためのデファクトスタンダードとなって、それは非常に遠く、最後の言葉であることからです。一つには、統計のほとんどは、それはあなたがあなたの元の必要性の面でポイントを逃している与えることを認識することが重要である。

これらの日(私見)あなたは、サンプルコールスタックだけでなく、プログラムカウンタサンプリングプロファイラが必要です。これは、壁時計時間だけでなく、CPU時間にサンプリングしなければなりません。サンプルは、高頻度で描画する必要はありません。アプリがユーザーの入力を待っているときには、サンプリングを抑制しなければなりません。それはあなたの行または命令レベルの情報だけではなく、機能レベルを与える必要があります。それは、その行が最適化された場合に保存することができ、時間の最も直接的な尺度であるので、それは、コードの行のためにあなたを与える必要があり、最も重要な統計は、それを含むサンプルの割合です。

いくつかのプロファイラは、特にこの、OProfileのとRotateRight /ズームを行うことができます。

他のヒント

静的計測の長所は、分析は、入力に依存しないという事実です。分析は、元のコードを発生し、コードのすべてのパスを含みます。完全なカバレッジ。計装のこのタイプは通常、実行時に別のプロセスを必要とせずに実行するための準備ができているバイナリを書き換えます。それはまた、コードが挿入されたコードから来るだけオーバーヘッドで、高速に実行することを意味します。静的計測の欠点は、時にはあなたの目標を達成することは非常に困難である、による実行時の情報の不足のためにと、そのために起因する詳述しない分析である。

は、他の側では、動的計測は、コードの実行時にすべての詳細情報が含まれません。ほとんどの場合、動的計測を行うツールを書くのは簡単です。一方、原因実行パスが与えられた入力に依存しているという事実のために、完全なコードカバレッジを達成することができません。また、装着される外部プロセスが必要と楽器がありますという事実はオリジナルのものは物事が遅くなります。

生成されたコードはコンパイル時であり、既に最終バイナリで書かれており、確実に静的計測技術の全ての長所と短所が含まれているため、

AFAIC、LLVMパスは、静的計測のために使用されます。

結論として、それはあなたが必要なものの問題です。あなたの仕事のための適切なツールを選択する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top