3

OpenGL コードを変更して Render() 関数を最適化しました。次に、制限時間180秒でInstruments / Time Profileを実行しました(したがって、測定は正確に行われました)。

  1. Invert Call Treeをオンにします。
    • 最適化されていない場合は680 ミリ秒、
    • 最適化の場合は500 ミリ秒。
  2. Invert Call Treeをオフにします。
    • 最適化されていない場合は277 ミリ秒、
    • 最適化の場合は345 ミリ秒。
  3. Top Functionsをオンにします ( Invert Call Treeはオフのままにします):
    • 最適化されていない場合は4591 ミリ秒、
    • 最適化では5277 ミリ秒。
  4. Invert Call Treeをオンにします (依然としてTop Functionsをオンにします):
    • 変更なし (4591)、
    • 変更なし (5277)。

これをどう解釈するか。最適化されたバージョンは高速ですか、それとも低速ですか?

4

1 に答える 1

7

Time Profiler の結果は、実行している Xcode のバージョンによって異なります。Xcode 4.4 以降を実行している場合、Time Profiler インストゥルメントには、呼び出しツリーの各シンボルに対して 2 つの列があります: Running Time と Self。Self 列は、関数がコール スタックの一番上にあった時間を示すため、より重要です。実行時間の列が示すのは、関数がコール スタック上にあった時間だけです。これは、実際にはスタックの一番上にあるという意味ではありません。

アプリが Render() で費やした時間を確認するには、Invert Call Tree チェックボックスの選択を解除し、Render() の Self 列を確認します。これがプロファイリングしているゲームである場合、コール ツリーでゲーム ループ関数をダブルクリックすることが役に立ちます。ゲーム ループ関数をダブルクリックするとソース ビューが開き、ゲーム ループが Render() 関数で費やした時間の割合が表示されます。

Time Profiler 計測器は、OpenGL コードのプロファイリングに最適なツールではありません。Mac アプリを作成している場合、OpenGL プロファイラー ツールは、Instruments よりも OpenGL コードのプロファイリングに優れています。Instruments には、OpenGL 統計を測定するための OpenGL Driver インストゥルメントもあります。iOS アプリをプロファイリングする場合は、OpenGL ES Analysis Instruments テンプレートと OpenGL ES Performance Detective ツールを使用します。

于 2012-09-17T02:12:03.750 に答える