問題タブ [kcachegrind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 最適化されたビルドと最適化されていないビルドの KCachegrind 出力
valgrind --tool=callgrind ./executable
次のコードによって生成された実行可能ファイルで実行します。
次のオプションを使用してdebug
ビルドを作成します-fPIC -fno-strict-aliasing -fexceptions -g -std=c++14
。release
ビルドには次のオプションがあります: -fPIC -fno-strict-aliasing -fexceptions -g -O2 -std=c++14
.
valgrind を実行すると、2 つのダンプ ファイルが生成されます。これらのファイル (1 つはデバッグ実行可能ファイル、もう 1 つはリリース実行可能ファイル) を KCachegrind で表示すると、デバッグ ビルドは次のように理解できます。
予想どおり、関数XYZ::Count() const
は 10001 回呼び出されます。ただし、最適化されたリリース ビルドは解読するのがはるかに難しく、関数が何回呼び出されているかは明確ではありません。関数呼び出しがinlined
. しかし、それが実際にインライン化されていることをどうやって知るのでしょうか? リリース ビルドのコールグラフは次のとおりです。
XYZ::Count() const
からの機能の表示は全くないようmain()
です。
私の質問は次のとおりです。
XYZ::Count() const
(1) デバッグ/リリース ビルドによって生成されたアセンブリ言語コードを見ずに、KCachegrind を使用して、特定の関数 (この場合は ) が呼び出された回数をどのように把握できますか? 上記のリリース ビルド コール グラフでは、関数は一度も呼び出されていません。
(2) リリース/最適化ビルド用に KCachegrind によって提供されるコールグラフやその他の詳細を理解する方法はありますか? https://docs.kde.org/trunk5/en/kdesdk/kcachegrind/kcachegrind.pdfで入手可能な KCachegrind マニュアルを既に見ましたが、見るべき便利なハック/経験則があるかどうか疑問に思っていましたリリースビルド用。
profiling - キャッシュグリング ファイルが非常に小さい
私はプロファイリングが初めてです。xdebug を使用して PHP のプロファイルを作成しようとしています。
cachegrind ファイルが作成されますが、重要なコンテンツはありません
xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_name = cachegrind+%p+%H+%R.cg を設定しました
追加の GET パラメータでページを呼び出します ?XDEBUG_PROFILE=1 私の cachegrind ファイルは生成されますが、重要なコンテンツはありません
ここに私の出力があります:
それだけです - 何か基本的なことが欠けているに違いありません。