質問
C/C++ コードをプロファイリングし、どの部分に最も時間がかかっているかを判断するための最適なツールを教えてください。現時点ではログのみに頼っていますが、不要な遅延が発生するため、情報はもちろん正確ではありません。
このようなツールが存在する場合、このツールは最適化できる領域を検出/提案できることが望ましいです。
プラットホーム:Linux
アプリケーションは組み込み環境で使用されるため、軽量かつ外部である必要があります (一部の IDE のプラグインではありません)。
解決
私は心から<のhref =」との組み合わせで callgrind
のをお勧めすることができますhttp://kcachegrind.sourceforge.net/html/Home.html」のrel = "nofollowをnoreferrer"> KCachegrind を。
他のヒント
「gprofのは、」実行時にCPUを占有しているルーチンを識別するための非常にシンプルかつ効率的なツールです。これは、関数の入れ子になったとフラットの両方のプロファイルを提供します。それはあなたのプロファイラの実行時に実行される各機能で撮影したCPU時間の割合、および、関数自体の中で撮影した割合、およびその子機能で撮影した割合を示します。それはあなたが簡単に問題のある機能を分離することができます。
Microsoft Visual C++ のプロファイラーを使用して良い経験をしました。次のような他の外部プログラムもあります。 インテル VTune, 、もあるが、そのほとんどは無料ではない。
は、プラットフォームに依存します。あなたはMSVCを使用している場合は、それのいくつかのバージョンが利用可能プロファイラプロファイラだけでなく(CodeAnalystとインテル®VTune)を持っている両方。AMDとIntelが組み込まれています。
Linuxでは、私が使用した唯一の1はgprofのですが、私は他の人がそこにいることを知っている(と私はAMDのか、Intelのものは、Linuxのバージョンで利用できるかもしれないと思うあまり)
そしてもちろん全体Valgrindのスイートは、あまりにも役に立つかもしれません。 callgrindまたはcachegrindなどの一部のツールは、あなたのパフォーマンスに関する多くの情報を与えることができます。
定量化またはKCachegrindのようなこのために多くの良いプロファイリングツールがあります。これらのツールの一つの問題は、彼らが十分に拡張しないことがあり、いくつかの大規模なシステム上のように、彼らは、実行時のパフォーマンスが遅くなるということです。
時にはスタックトレースを見て、この多分4回繰り返し、ちょうどデバッガとCtrl-Cを押しで実行するのに十分です。
あなたは、コードの同じ部分に常にある場合は、そして、あなたはおそらく、ほとんどの時間を費やしている場所を発見しました。
を明確にすいつもの:
プロフィールド&計測しております。
検出領域が最適化されています。
これらは異なる。彼らは同じではありませんが、何をされている場合がありしました。
のための問題(1)多くの良いプロファイラする糸口を提示する。
のための問題(2)プロファイラーの助ける。
があるように通常より効果的な技術。
、私は AQtimeはを示唆しています。 (もちろん、.NET、DelphiとVB(およびすべてのC ++コンパイラを含む、そこにほぼすべてのコンパイラをサポートしています。)と私が今まで試しただけで最高のプロファイリングツールであり、それが唯一のパフォーマンスプロファイラではありません。
。。パフォーマンス測定のために OProfileのには、のLinux Toolsプロジェクトでます。