2

C ++でいくつかの数値計算を行っています-Osが、デバッグビルドで最適化を使用すると、CPU使用率に大きな違いが見られます。したがって、最適化を有効にしてコードのプロファイルを作成し、コンパイラーがすでに十分に最適化しているコードを最適化する時間を無駄にしないようにします。

最適化を使用してプロファイリングしようとすると、(ファイル-Osの場所を手動で指定した場合でも)Instrumentsにコードをシンボリック化させることができません。.dSYMテンプレート化またはインライン化されていないトップレベルのC++メンバー関数も表示されません。

-O0デフォルトの最適化レベルを指定すると、うまくシンボリック化できます。

それで、最適化を有効にしてプロファイリングすることさえ可能ですか?もしそうなら、それを機能させるための秘訣は何ですか?

XCode4.3.3を使用しています。

4

1 に答える 1

2

Time Profilerは、を使用するときに実際に象徴的でした-Os。オプティマイザーは非常にうまく機能したので、私のC ++ DSPコードはインライン化され、プロファイラーが実行させた短時間でどのコードもサンプリングしなくなるまで高速化されました。コールツリーに表示されたのはシステムコールだけでした。

プロファイラーを長時間実行しようとすると、プロファイラーがDSPコードのいくつかのブリップをキャッチしました。NSOperationQueueハンドラーによって呼び出された最上位のDSP関数のみが表示されました。下の残りはすべてインライン化されているように見えました。

でコンパイルすると、より便利な結果が得られました-O2。私のDSPサブルーチンの多くは(インライン化されるのではなく)そのまま残されていたので、DSPアルゴリズムがどこで時間を費やしているかをより正確に測定することができました。しかし、これはすべて議論の余地があります。これは、アプリが私のDSPコードよりもハウスキーピングシステムコールに非常に多くの時間を費やしていることがわかるためです。

于 2012-06-27T00:50:13.527 に答える