時間が費やされている場所をプロファイリングするためのツールを探しています。oprofile を見てきましたが、本当に必要なものが得られません。
私は、特に CALLGRIND_START_INSTRUMENTATION および CALLGRIND_STOP_INSTRUMENTATION マクロを使用して、callgrind を見ていました。valgrind が一般的に行うように、ツールによってアプリの速度が低下することは望ましくありません。しかし、Valgrind はすべてを 1 つのスレッドにシリアライズしているように見えるため、実際には機能しません。
たとえば、fn A が fn C を呼び出す fb B を呼び出し、B と A に戻る場合、どこでどのくらいの時間が費やされたかを知りたいと考えています。私は使用しているいくつかのミューテックス ツールを持っていますが、適切な時間ツールは、正確にどこに時間が費やされているかを確認するのに非常に役立ち、それらのパスに集中することができます。自分で何かを追加する以外に、このタスクに使用できるツールはありますか? そのC ++アプリところで。valgrind は、カーネルがシングル スレッドであるため使用できません。また、私のアプリは待機に多くの時間を費やしているため、単純な CPU プロファイラーは実際にはあまり役に立ちません..