多くの静的および動的計測ツールがあります。すすは、Java バイトコードの静的計測ツールです。Pin と Valgrind は、バイナリ用の動的計測ツールです。
静的計測ツールと動的計測ツールの長所と短所は何ですか? ランタイム パフォーマンスの点では、静的インストルメンテーション ツールの方が優れていると思いますが、動的ツールはより強力です。実力と性能を比べてみてください。
さらに、インストルメンテーション ツールを使用することと LLVM パスを作成することの違いは何ですか?
多くの静的および動的計測ツールがあります。すすは、Java バイトコードの静的計測ツールです。Pin と Valgrind は、バイナリ用の動的計測ツールです。
静的計測ツールと動的計測ツールの長所と短所は何ですか? ランタイム パフォーマンスの点では、静的インストルメンテーション ツールの方が優れていると思いますが、動的ツールはより強力です。実力と性能を比べてみてください。
さらに、インストルメンテーション ツールを使用することと LLVM パスを作成することの違いは何ですか?
かなりの時間がかかり、その時間を節約するために最適化できるコードを発見する必要があると思います。それは単なるタイミングルーチンとは別の目標です。
すべてが入力データの組み合わせに依存するため、静的アナライザーには懐疑的です。
動的インスツルメンテーションは、自己時間と合計時間、絶対時間、平均時間、パーセントなどの関数のプロパティを測定しようとします。また、コール カウント、およびコール グラフでの各ルーチンの役割。
ダイナミック インストルメンテーション (la gprof ) は、何十年もの間デファクト スタンダードでしたが、これが最後の言葉になるには程遠いものです。1 つには、それが提供する統計のほとんどが、本来の必要性という観点から見過ごされていることを認識することが重要です。
最近(私見)、プログラムカウンターだけでなく、コールスタックをサンプリングするサンプリングプロファイラーが必要です。CPU時間だけでなく、実時間でサンプリングする必要があります。サンプルは高頻度で抽出する必要はありません。アプリがユーザー入力を待っているときは、サンプリングを抑制する必要があります。関数レベルだけでなく、行または命令レベルで情報を提供する必要があります。コード行について得られる最も重要な統計は、それを含むサンプルのパーセンテージです。これは、その行が最適化された場合に節約できる時間の最も直接的な尺度だからです。
いくつかのプロファイラー、特に Oprofile と RotateRight/Zoom でこれを行うことができます。