問題タブ [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++ - gcc-4.1.2 と gcc-4.8.1 の間のパフォーマンス最適化の特定
環境:
現在、まだ gcc-4.1.2 を使用している私のチームの現在のビルド環境と、gcc-4.8.1 を使用したビルドとの間のパフォーマンスの向上を調査しています。結果は驚くべきもので、回帰全体で少なくとも 25% のスピードアップの加重平均が得られました。また、gcc-4.4.7 を使用して別のテストを行いましたが、加重平均で約 7% の速度向上しか見られませんでした。この大きな不一致は、新しい C++11 のコピー/移動セマンティクスに関連していると推測していました。これは、メモリ トランザクションがプログラムのかなり大きなボトルネックだったためです。私たちは STL 型を多用しているので、おそらくコンパイラは新しいムーブ コンストラクタをうまく利用していたのでしょう。
私の主張を検証するために、平均的なパフォーマンスの向上を示すテストを選び、両方のコンパイルで kcachegrind を実行しました。結果は以下に掲載されていますが、期待したほどではありませんでした。迅速で潜在的に関連する詳細を指摘する必要があります。官僚的な理由から、gcc-4.8.1 の libstdc++.so を静的にコンパイルする必要がありました。これは、kcachegrind の場所が、私が安全のために検閲したいくつかのプライベート ライブラリを示していたことを意味します。
驚いたことに、メモリ操作の呼び出しの量は比較的変化がありませんでした (malloc
および_int_malloc
)。もう 1 つの興味深い結果は、 がまったくなく、memcpy
が追加されていることです_memcmp_sse4_1
。
質問:
C++11 セマンティクスがパフォーマンス向上の理由であるという私の仮説を検証したい場合、callgrind グラフで何を探す必要がありますか? より少ないメモリアクセスを見つける必要がありますか、それともstd::string(string&&)
署名を見つける必要がありますか (実際にはここにはありません)。これは でコンパイルされていることに注意してください。これは-O3
、そのような署名が最適化されていないことを意味する可能性があるため、私のジレンマです。
このような大幅なパフォーマンスの向上を報告できることを嬉しく思いますが、このパフォーマンスがどこから来ているのかを理解したいと思います. より明確な回答を得るために、さらに結果を報告する必要がある場合はお知らせください。これがSOにとって一般的すぎる質問ではないことを願っています...
ruby-on-rails - 新しいマシンへの移行後、最初の RSpec テストが非常に遅い
新しい Mac に移行するまで、私の RSpec の例は問題なく動作していました。現在、最初のテストには 1 ~ 3 分かかるようです。次にテストを (別の順序で) 実行すると、同じテストに 0.2 秒しかかからない可能性があります。
rspec -p
そのラウンドでどの例が遅いかを示しますが、なぜデバッグするのには役立ちません。
それは、外部サービスへの呼び出しであるか、おそらくこのマシンに接続されていないためにタイムアウトしている外部ボリュームの呼び出しである可能性がありますが、参照が何であるか、どこにあるかはわかりません...同じコードベースをテストしている他のチームメイトはドンこの問題はありません。
考え?
編集(プロファイリング結果の画像追加)
これは役に立ちますか?cycle 5
意味がわかりません...
kcachegrind - kcachegrind: 完全な呼び出しグラフを描画するには?
kcachegrind のコール グラフが気に入っています。しかし、完全な呼び出しグラフをグラフ化することはできませんでした。
設定する必要があると思います:
- グラフ > 発信者深度 > 無制限
- グラフ > 呼び出し先深度 > 無制限
- グラフ > 最小 ノード コスト > 最小値なし
- グラフ > 最小 通話料金 > 最低額なし
1と2は簡単です。3 は memu にありますが、グレー表示されています。4はメニューにありません。
完全なコール グラフをグラフィカルに表示する方法はありますか?
php - XDebugs プロファイラー出力ファイル名で MVC パスを使用することは可能ですか?
XDebug を使用して大規模な MVC アプリケーションのプロファイリングを行っていますが、ファイル名 (.php) ではなく URI で個々のリクエストをプロファイリングする方がはるかに簡単です。複数のリクエストが内部関数を介して行われ、1 回のページ更新で複数のグラインド ファイルが作成されるためです。
%p = プロセス ID、%t = タイムスタンプ、%s = スクリプト名 ( var_path_to_example.php ) を見ました。
ファイルの名前を、grind.{domain}{path}.%p のような名前にすることができれば、はるかに簡単になります。
これは可能ですか?私は、後で何をするかもしれない他の文字列フォーマットの置き換えを見つけることができませんでした。
単一ページの更新では現在、4 つのグラインド ファイル (インデックス用に 3 つ、メイン リクエスト用に 1 つ、メディア コンプレッサー用に 2 つ) と、メディア パス リライターおよびリサイザーである img.php 用に 1 つが作成されます。
この状況では、これらすべてを単一の www.example.com/path/to/controller.grind に結合することが望ましいでしょう。
kcachegrind - Kcachegrind グラフを解釈するには?
Kcachegrind
パフォーマンス分析に使い始めました。しかし、出力グラフと出力グラフがわかりませんGUI
。
たとえば、このコールグラフの場合
SignatureIterator::iterate_parameters()
9.25% が何を指しているのかわかりません。5 198x は、何回SignatureIterator::iterate_parameters()
呼び出され たSignatureIterator::parse_type()
かを意味します。の 100% とはどういう意味Symbol::byte_at(int) const
ですか? とは何ELF Object
ですか?
注: 公式ドキュメントhttp://kcachegrind.sourceforge.net/html/CallGraph.htmlにありますが、まだ何が何であるかを理解していませんthe caller distance to the function
か?
kcachegrind - KCachegrind のデフォルトの拡張機能
Ubuntu 14.10 にKCachegrindをインストールしました
[開く] ボタンをクリックすると、ファイル「Callgrind Profile Data」のデフォルト フィルタを含む [開く] ダイアログが表示され、ファイルが表示されません。フィルターで「すべてのファイル」を選択する必要があり、ファイルが表示されます。
このダイアログを開いたときに、彼が一度見たファイルが必要な拡張子は何ですか?
c++ - KCachegrind と Callgrind を使用してコードの一部のみを測定する方法は?
valgrindを使用してコードを分析したいと考えています。問題は、興味のない巨大な起動シーケンスがあることです。
valgrind/callgrind.hで定義が見つかりました。
- CALLGRIND_START_INSTRUMENTATION
- CALLGRIND_STOP_INSTRUMENTATION
- CALLGRIND_DUMP_STATS
この記事によると、次のオプションでvalgrindを実行する必要があります。
valgrind --tool=callgrind --instr-atstart=no ./application
これを行うと、次の 2 つのファイルが作成されます。
- callgrind.out.16060
- callgrind.out.16060.1
次に、kcachegrind を使用して結果を視覚化します。これはうまく機能しますが、スタートアップ シーケンスをスキップするためのマクロは何もしていないようです。測定したい場所だけでパフォーマンスを測定するにはどうすればよいですか?
valgrind - callgrind に kcachegrind コールグラフ内のすべての関数呼び出しを表示させる
大規模なプロジェクトのプロファイリングに valgrind ツールの callgrind と kcachegrind を使用していましたが、callgrind がすべての関数 (最も高価な関数だけでなく) の統計を報告する方法があるかどうか疑問に思っていました。
具体的に言うと、kcachegrind でコールグラフを視覚化したところ、かなり高価な関数だけが含まれていましたが、プロジェクトのすべての関数をコールグラフに含める方法があるかどうか疑問に思っていました。プロファイリング情報を生成するために使用されるコマンドを以下に示します。
valgrind にオプションを指定する必要があるかどうか、または別の最適化でアプリケーションをコンパイルする必要があるかどうかはわかりません。これは些細なことかもしれませんが、解決策を見つけることができませんでした。これに関するポインタは高く評価されています。
ありがとう !