影響が少なく、OS に依存しない C++ コード用のプロファイラーを探しています。
影響が少ないと言うときは、valgrind よりも邪魔にならないものを指しています。私はMIPSベースの組み込み環境で使用する予定であり(したがってos-independent)、移植されたバージョンのvalgrindを試してみましたが、パフォーマンス特性が完全に変更されました(ハイゼンベルグの原理が働きすぎているため)。メモリ バスの速度がボトルネックであることはわかっていますが、これが valgrind が非常に煩わしい理由を説明している可能性が最も高いです。
コードの特定の部分を測定できるチェックポイントに基づいて、自家製のタイプのプロファイラーを作成しました。基本的に、コードを変更 (および再コンパイル) して、コード内の戦略的な場所にチェックポイントを設定する必要があります。次に、実行されると、各チェックポイントにヒットした回数と、最後のチェックポイントにヒットしてからの時間が格納されます。次に、それを実行した後、チェックポイントをダンプし、それぞれについて、ヒット数、最大時間、最小時間、平均時間などを計算します。
このプロファイラー (私は LowImpactProfiler と呼んでいます) は問題なく動作しますが、他にもっと良いものがあるのではないかと思います。
サンプリングプロファイラーであるoProfileを検討しましたが、Linuxを実行していないため、実装は非常に難しいと思います。