Gpu

プロファイルGPUレンダリング



Profile Gpu Rendering



Androidパフォーマンス分析ツールプロファイルGPUレンダリングの詳細な紹介[このブログ投稿には写真が含まれています](2015-05-10 15:34:03)
転載

カテゴリ:Android

ソースコードがなくても、アプリケーションのパフォーマンスの問題を追跡して特定するにはどうすればよいですか? ?



「プロファイルGPUレンダリング」、Android4.1で導入されたツール。このツールは、設定アプリの開発者向けオプションにあります。

Android 4.2デバイスに開発者向けオプションが表示されていない場合は、[電話について]または[デスクトップの選択について]インターフェイスの下部にある[バージョン番号]を7回クリックできます。



このオプションをオンにすると、システムは各ウィンドウの最後の128フレームを描画するのに必要な時間を記録します。このツールを使用する前に、まずアプリケーションを強制終了する必要があります(Androidの将来のバージョンではこの要件が削除されます)

方法:

必要な場合を除いて、この分析のすべての測定を行うときは、メインインターフェイスのタイムラインをゆっくりスクロールし、追加のエントリを表示できるように数ピクセルスクロールさせる必要があります。



アプリを再起動してタイムラインのメインインターフェイスをスクロールしたときに、ターミナルで次のコマンドを実行しました。

$ adbシェルdumpsysgfxinfo com.jv.falcon.pro

結果のログには、「プロファイル」というラベルの付いたミリ秒単位のデータがあります。このデータには、3列のデータを含むテーブルが含まれており、アプリケーションの各ウィンドウにはそのようなテーブルが1つあります。このデータを使用するには、このテーブルをお気に入りのスプレッドシートソフトウェアにコピーするだけで、データスタックを生成できます。次の写真は私の測定結果です。

各列は、各フレームがレンダリングに費やす時間の見積もりを示します。

'Draw' refers to the time the Java layer uses to create 'display lists'. It shows how much time it takes to run, for example, View.onDraw(Canvas). 'Process' refers to the time that the Android 2D rendering engine uses to execute 'display lists'. The more Views in your UI hierarchy, the more drawing commands you need to execute. 'Execute' refers to the time when an image is delivered to a compositor. This part usually takes less time

注意:

60 fpsのフレームレートでスムーズなレンダリングを実行するには、各フレームにかかる時間は16ミリ秒未満です。
「実行」について:

Excuteに時間がかかる場合は、システム描画パイプラインの前で実行していることを意味します。 Androidは、実行時に最大3つのキャッシュを使用できます。それでもアプリケーションにキャッシュが必要な場合は、3つのキャッシュのいずれかが解放されるまでアプリケーションがブロックされます。これが発生する理由は一般に2つあります。最初の理由は、アプリケーションがDalvik(Java仮想マシン)側で描画が速すぎ、GPU側でその表示リストが遅すぎることです。 2番目の理由は、アプリケーションが最初の数フレームのレンダリングに多くの時間を費やしていることです。パイプラインがいっぱいになると、アニメーションが終了するまでそれを維持することはできません。これらは、Androidの次のバージョンで改善したい場所です。

上の写真は私の疑問を明確に裏付けています。このアプリケーションはほとんどの場合正常に動作しますが、フレーム損失が発生することもあります。