問題タブ [gprof]
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.
profiling - OCamlコードをプロファイリングするためのツール
コンパイル中に-pオプションを使用してからgprofを使用する以外に、OCamlコードをプロファイリングするためのプログラムを知っている人はいますか?0.01秒のサンプリング時間をさらに短縮できるかどうかを確認するために、この質問をしていますか?
c++ - makefile で gprof を使用する
プログラムのプロファイリングに問題があります。
次のように、各関数を個別にコンパイルします。
次に、次のようにすべてをリンクします。
しかし、プログラムを実行して で./exec
データをgprof exec
プロファイリングすると、プロファイリング データが取得されません。次のように表示されます。
私は何か間違ったことをしていますか?
c - コードのセクションをプロファイリングする方法は?
Cで記述されたソフトウェアのプロファイリングを行う必要があります。問題は、gprofまたは自分のbegin timer / end timer関数呼び出しで各関数に費やす時間が得られる一方で、どれが最も時間がかかるかについての情報がないことです。各関数内の一部。それをマイクロ最適化と呼ぶ人もいるかもしれませんが、それが時間の必要性です!
これを実現して、begin / endタイマー呼び出しをforループに「手動で」配置することの1つ(これらは複数存在する可能性があります)。この場合、より賢明なことは、マクロを使用してこれらの呼び出しを有効/無効にできるようにすることです。
しかし、私はこの計装を自動化したいですか?
同じことを達成するための優れたツールが存在するかどうか教えてください。インストルメントされたプログラムをスクリプトから繰り返し呼び出して、コードの各「セクション」で費やされた時間の平均を見つけることができれば理想的です。今のところ、セクションは大まかに定義された用語ですが、その「ツール」はセクションが何であるかについてより具体的な定義を持つことができます。
どういうわけか、どのツールが役立つかを学ぶことができれば、それも役に立ちます。
gdb - アプリケーションで行われたすべての関数呼び出しのリスト
アプリケーションで呼び出されているすべての関数を一覧表示するにはどうすればよいでしょうか。GDB を使用してみましたが、そのバックトレース リストはメイン関数呼び出しまでしかありません。
より深いリスト、つまりメイン関数によって呼び出されるすべての関数のリストと、これらの呼び出された関数から呼び出される関数などのリストが必要です。
これをgdbで取得する方法はありますか? または、これを取得する方法についての提案を教えてください。
c++ - gprofとboostを使用する
gprofで多くのブースト関数を使用するコードをプロファイリングしている間、非常に厄介で追跡が難しい出力があります。以下のサンプルを参照してください。ブーストまたはよりブーストに適した代替手段で使用するためにgprofをクリーンアップする方法はありますか?その外観から、ブースト:: math :: policyの繰り返しがあり、プロファイリング出力が乱雑になり、コールグラフの表示や理解が困難になっています。
ところで、ここに例の抜粋があります
c++ - 特定のコード行で費やされた`gprof`時間
私はgprof
プロファイラーをと組み合わせて使用していg++
ます。
私のコードには、プライマリ関数に十分に関連している動作のいくつかのセクションをカプセル化する関数があり、それらを独自の関数に分割することは意味がありません。
これらのコード領域のそれぞれにどれだけの時間が費やされているか知りたいのですが。
したがって、コードが次のようになっていると想像すると、
A、B、およびCは、私が興味を持っているコードの特定のセクションを表しますが、gprof
それらの特定のセクションでの作業にどれだけの時間が費やされているかを知る方法はありますか?
profiling - gprof が合計時間を過小評価する理由
5時間実行されるCPUバウンドプロセスがあります(を使用したCPU時間getrusage()
)
gprof でプロファイリングしてみました。かかった合計時間main()
はわずか約 5000 秒です。
私のプログラムは CPU バウンドで、ディスク IO がいくらかありますが、それほど重要ではありません。プロファイルの割り込みがオンになっており、私のプロセスはマルチスレッド化されていません。
c++ - cilk_spawn の時間を計算する方法
投稿を見てくれてありがとう
一部の Cilk Plus コードのベンチマークを行っており、「スポーン」操作を完了するのに必要な時間を計算しようとしていました。fib() に必要な計算時間ではなく、スポーンに必要な時間のみを計算することに関心があります。これは可能ですか?
次のコードにタイマーを配置すると、期待どおりに動作しますか? 私の考えが正しければ、「// RRS」を timer_start() と timer_stop() に置き換えて、仕事を終わらせますか?
fortran - fortranコードのgprof出力の_IO_wfileとは何ですか?
私はいくつかのFortranコードをIntelFortranコンパイラーifortでコンパイルしています。gprofを使用してプロファイルテストを実行すると、ほとんどの場合IO操作で使用されていることがわかります。ファイルの終わりを見つけると思いますが、これに関するドキュメントはこれ以上見つかりません。
したがって、問題は、このIOがLinuxに固有なのか、ifortに固有なのか、それともFortranに固有なのかということです。私はこのコードを最適化しようとしていますが、グーグルでこの用語に関する有用な情報を見つけられませんでした。
linux - プロセスを強制終了する前に gmon.out を保存する
gprof を使用してデーモンのプロファイルを作成したいと考えています。私のデーモンは、いくつかのコールバックを登録するサードパーティのライブラリを使用してから、main
返されない関数を呼び出します。kill
デーモンを終了するには、(SIGTERM または SIGKILL のいずれか)を呼び出す必要があります。残念ながら、gprof のマニュアル ページには次のように書かれています。
プロファイリングされたプログラムは、プロファイリング情報を gmon.out ファイルに保存するために、「exit」(2) を呼び出すか、正常に戻る必要があります。
SIGTERM または SIGKILL で強制終了されたプロセスのプロファイリング情報を保存する方法はありますか?