問題タブ [callgrind]
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++ - C++ プロファイリングの Very sleepy と Callgrind の違い
プロファイリングのために、 Very SleepyとCallgrindの違いを学ぼうとしています。プロファイリングする予定のコードは C++ で記述されており、Linux と Windows の両方で動作します。
Linux では、Callgrind を使用して、Self と包括的な相対コストを調べることができました。私の理解では、Callgrind はインストルメント化されたプロファイリング手法を使用しており、かなりの時間がかかります。ただし、Very Sleepy は統計プロファイリングを使用しており、非常に高速です。どちらもプロファイリングに異なるアプローチを使用しているため、2 つの結果を比較することはできません。
Linux と Windows の両方である種のプロファイル比較を行う方法はありますか? 残念ながら、Callgrind は Windows では利用できず、Very Sleepy ではその逆です。
c++ - Callgrind (Valgrind プロファイラー) が有用な結果を出力しない
次のような構造の C++ コードを書きました。
次のコマンドを使用して、callgrind でプロファイリングを試みました。
次の出力が得られます。
main() を除いて、ソース コードのどの部分が最も多くの時間を占めているかはわかりません。ほとんどの時間が optimize() 関数に費やされ、その時間のかなりの部分が kernel() 関数に費やされていることは事実ですが、出力からはわかりません。コードを高速化できるように詳細を取得するにはどうすればよいですか?
それが役立つ場合は、コードで std::vectors を広範囲に使用しています。以前、配列を使用して同様のコードを実装したことがありますが、callgrind は問題なく動作しているように見えました。これは問題になる可能性がありますか?
O3 フラグを無効にすると、次の出力が得られます。
これには前の出力より多くの情報がありますが、まだ 2 つの問題があります。2 つ目は、ほとんどの時間 (~50%) が、コードで直接使用していない libc 関数によって占められていることです。コードのどの部分がこれらの呼び出しにマップされているかを知るにはどうすればよいですか?
c++ - Valgrind callgrind が C++ 正規表現で非常に遅い
Boost を正規表現に厳密に使用するアプリケーションがあります。私は g++4.9 にアップグレードし、組み込みの正規表現関数を使用するようにコードの一部 (すべてではありません) を切り替えました (単純な変更)。切り替え後、valgrind の --callgrind 機能を使用してアプリケーションのプロファイルを作成してみました。しかし、それは非常に遅いです。これは私のアプリケーションに関連していますが、1 秒あたり約 30 回の繰り返しから、1 秒あたり 1 回未満になりました。アプリケーション自体ではないことを確認するために、valgrind を実行して/実行せずにテストしました。Boost の実装でもテストしましたが、問題はありませんでした。
valgrind 3.10.0 と 3.10.1 でテストしましたが、どちらも同じ動作を示します。
編集: 私が置き換えた関数の簡易版。Boost と C++ の構文が類似しているため、2 つの関数は名前空間 (Boost:: v. std::) を除いて本質的に同一です。
valgrind - 特定のファイルの callgrind 出力
callgrind の出力をファイル名にリダイレクトしたいのですがcall_grind.txt
、それを実行しようとすると、ファイルが生成されますが、そのファイル内には出力がありません。
例えば:
また、callgrind.out.<pid>
システム内のファイルが通常あるべき場所に取得されません。
私の理解によると、以下のコマンドを実行すると、次のものが作成されますcallgrind.out.<pid> file
。
では、ツールの使用方法と出力ファイルの読み取り方法を教えてください。
c++ - Callgrind 関数命令数の上限
コードの一部をプロファイリングするために callgrind を使用していますが、関数の終了後に膨大な数の命令がカウントされていることに気付きました。ここに問題の出力があります
そして、これが関数全体のコードです。Edmonds-Karp アルゴリズムの単なる実装です。
出力を正しく解釈している場合、メソッドの終了後に約 20 億の命令が実行されています。これらは何ですか、どうすればそれらを減らすことができますか? また、一般的に、「...にキー付けされたグローバルコンストラクター」行は何を意味しますか?
c++ - Linux で C++ プログラムを 1 行ずつプロファイリングし、Eclipse に統合できるか?
私たちはプロジェクトを持っており、かなりの量の数学を含むテストを行っています (線形代数、大規模な行列操作、疎行列、openblas、armadillo ライブラリなどを含む)
関連するものはすべて本当に古いので、この質問をしました。しかし、ボトルネックを特定し、それらを緩和する方法を見つけるために、プロジェクトを行ごとにプロファイリングするにはどうすればよいでしょうか? そのための新しいツールはありますか?また、このツールが Linux 上の Eclipse と統合できれば幸いです。
profiling - callgrind プロファイリングは他のプロセスの影響を受けますか?
callgrind を使用してアプリケーションのプロファイルを作成したいと考えています。さて、非常に時間がかかるため、その間、同じマシンで Web ブラウジング、コンパイル、およびその他の集中的なタスクを実行します。
プロファイリング結果に偏りがありますか? valgrind はシミュレートされた CPUを使用するため、他の外部プロセスが valgrind の実行に干渉しないはずです。私は正しいですか?
c - Callgrind Annotate が OS X 10.10 で機能しない
何が間違っているのか質問したいのですが、
私はCでプログラムを書き、それを翻訳します
そして走る
callgrind.out.[pid-number]を作成し 、実行した場合
アウトになります
-- ユーザーが注釈を付けたソース: main.c
main.c の情報は収集されていません
プログラム最適化ツールのコードと関数の呼び出しに注釈を付ける方法はありますか?
ノート
gcc と gprof で Apple がサポートしていないデバッグ オプションもサポートされていないため、動作しません。そして、KDEプログラムはMacで実行したくありません...それを解決するための役立つ情報に感謝します