1

機器を使用して、デバイスで実行されている信号処理コードをプロファイリングしようとしています。コードは C++ で記述されています。以下は、数秒間プロファイリングした後の出力です。. .

ここに画像の説明を入力

powf の呼び出しが CPU 時間の大部分を占めていることは明らかですが、コード内でどの powf の呼び出しが最大の違反者であるかを判断する方法がわかりません。私がサメを使っていたときは、ソース内の呼び出しの回線番号を取得するのは本当に簡単でした。インストゥルメントから得られるのは、ナンセンスなマシン コードだけです。

powf三角形を展開すると、次のようになります。. . .

ここに画像の説明を入力

4

1 に答える 1

1

powfへの呼び出しを含むコードは、CoreAudio に渡すコールバック関数の一部であるように見えます。Instruments はコールバックのコール チェーンをシンボル化できないようです。そのため、コード内に生のアドレスが表示されているだけです。これらのアドレスは、適切なツール (例:otool、または同様のもの)、しかし長期的には、ダミー データを使用してループ内でコールバック コードを呼び出すテスト ハーネスを実装することをお勧めします。これは、将来のデバッグおよびプロファイリング アクティビティに使用するときに元に戻る可能性が高くなります。便宜上、プロファイリング/デバッグ用の Mac OS X 実行可能ファイルとしてテスト ハーネスをビルドすることもできます。これは、バグとパフォーマンスのボトルネックが、少なくとも最初の概算では両方のプラットフォームで類似している可能性が高いためです。

于 2012-10-24T13:10:57.283 に答える