Android 拡張現実アプリの FPS を測定したいと考えています。dumpsys framestats を使用するためのドキュメントに従おうとしています。
これは私の手順です:
- デバイス (Galaxy Tab S5e) を USB 経由でコンピュータ (MacBook Pro) に接続します
- アプリケーションを起動する
- ターミナルを開いて入力
adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
結果が出ます。ドキュメントには、CSVデータを取得する必要があると書かれています(私はそうしています)。ここにあります:
Flags,IntendedVsync,Vsync,OldestInputEvent,NewestInputEvent,HandleInputStart,AnimationStart,PerformTraversalsStart,DrawStart,SyncQueued,SyncStart,IssueDrawCommandsStart,SwapBuffers,FrameCompleted,DequeueBufferDuration,QueueBufferDuration,
1,270900288236110,270901404902732,9223372036854775807,0,270901406732543,270901407052751,270901407062751,270901480932022,270901488003689,270901488511137,270901489180876,270901502575459,270901504554157,1520000,1026000,
1,270901416955482,270901500288812,9223372036854775807,0,270901507061241,270901507131709,270901507732074,270901524054574,270901524125251,270901524430720,270901524804834,270901531068480,270901534144522,3249000,1831000,
まず、次の場合、なぜ 2 行しかないのですか。
「この出力の各行は、アプリによって生成されたフレームを表します」
待ってからコマンドを再実行すると、再び 2 行しか取得できません。値が更新されることもあれば、更新されないこともあります...
ドキュメントには、次の方法でフレーム時間を計算できると書かれています。
(FRAME_COMPLETED - INTENDED_VSYNC)
したがって、たとえば1分後にADBコマンドを実行し、フレーム時間の負荷を取得してグラフ化できると思いましたが、一度に2フレームしか取得できない場合...そしてADBコマンドを再実行してもそうでない場合データを更新する... フレームタイムを測定するにはどうすればよいですか? ここで何が欠けていますか?