2

いくつかの C コードをプロファイリングし、各行または少なくとも各ブロック (while/if-else/for-functions) などで実行時間の割合を含む注釈付きファイルを取得する必要があります。

これまでのところ、valgrind(callgrind) と gperf およびその他のツールについて調べてきました。これまでのところ、私が得るものは

  • 実行回数など、各関数またはソースコードの行のカウント。
  • またはカウントの割合。
  • または、各関数呼び出しにかかる実行時間。

ただし、カウントではなく実行時間の割合が必要であり、それがソースコードの各行または少なくともすべてのブロック(while/if-else/for-functions)に対して必要な場合。

誰かが私にできる方法を教えてもらえますか?

ありがとう、

4

2 に答える 2

1

perf(1)(Ubuntuのパッケージの一部linux-tools-common)があなたが望むものを手に入れると信じています。新しいカーネルに含まれている Linux のパフォーマンス カウンターと呼ばれるカーネルベースのサブシステムを利用します。詳細については、こちらをご覧ください

以下簡単な使用例。必ずデバッグ シンボルを使用してコンパイルしてください。

$ perf record ./myprogram arg1 arg2
$ perf report

Cachegrindも検討する価値があるかもしれません。

于 2015-03-04T11:15:02.263 に答える