2

Cで記述されたソフトウェアのプロファイリングを行う必要があります。問題は、gprofまたは自分のbegin timer / end timer関数呼び出しで各関数に費やす時間が得られる一方で、どれが最も時間がかかるかについての情報がないことです。各関数内の一部。それをマイクロ最適化と呼ぶ人もいるかもしれませんが、それが時間の必要性です!

これを実現して、begin / endタイマー呼び出しをforループに「手動で」配置することの1つ(これらは複数存在する可能性があります)。この場合、より賢明なことは、マクロを使用してこれらの呼び出しを有効/無効にできるようにすることです。

しかし、私はこの計装を自動化したいですか?

同じことを達成するための優れたツールが存在するかどうか教えてください。インストルメントされたプログラムをスクリプトから繰り返し呼び出して、コードの各「セクション」で費やされた時間の平均を見つけることができれば理想的です。今のところ、セクションは大まかに定義された用語ですが、その「ツール」はセクションが何であるかについてより具体的な定義を持つことができます。

どういうわけか、どのツールが役立つかを学ぶことができれば、それも役に立ちます。

4

3 に答える 3

1

Callgrind ( Valgrindツールの 1 つ) をKCachegrindと組み合わせて使用​​してみてください。この質問も参照してください。

于 2012-03-03T01:24:34.640 に答える
0

私自身は使用していませんが、Valgrind 計測フレームワーク ( http://www.valgrind.org/ ) には、達成しようとしていることに必要な非常にきめ細かいプロファイリングを可能にするツールがあると聞いています。

于 2012-03-03T01:29:49.260 に答える
0

コードをできるだけ速く実行したいでしょう。

gprof は測定ツールです。元の著者が書いたように、代替実装の評価に役立ちます。彼らは、代替実装を必要とするコードを見つけるのに効果的だとは言いませんでしたし、そうではありません。

間違っているのは、測れば位置がわかるというものですが、部屋の中でゾウを見つけたい場合、ゾウがそこにいることを知るために測る必要があるのでしょうか? いいえ、目を開けてください。

これは、プログラムが何をしているかに目を向ける方法です。

于 2012-03-03T13:42:05.393 に答える