perfetto / systraceでUIレンダリング時間を見つけるのを手伝ってくれる人はいますか?

Aug 23 2020

Androidの各アクティビティのUIレンダリング時間を見つけようとしています。systraceまたはperfettoを使用してパフォーマンスを分析できることがわかりました。しかし、問題は、その巨大なグラフからUIレンダリング部分を見つけることです。誰かがsystraceまたはperfettoからUIレンダリング時間を見つけるのを手伝ってくれますか?

回答

YiYang Aug 26 2020 at 23:41

システムトレースには、デバイスで実行されているすべてのプロセスからのデータが含まれているため、最初に関連するプロセスを見つける必要があります。ここにあなたが始めるためのいくつかの場所があります:

  • アプリのプロセス。名前はcom.your.appのようになります。そのプロセスを展開してから、メインスレッド(プロセス名と同じ名前)とRenderThreadというスレッドに注目します。AndroidStudioのRenderThreadとメインスレッドのスクリーンショット
  • SurfaceFlingerののプロセス。これはAndroidデバイスで実行されるプロセスであり、ディスプレイへのサーフェスの合成を担当します。そのプロセスを拡張し、そのメインスレッドと無数のカウンター(VSYNC、SurfaceViewなど)を探して、レンダリングの問題のトラブルシューティングに役立てます。PerfettoのSurfaceFlingerカウンターのスクリーンショット

UIレンダリングの問題の原因を正確に知るには、アプリの動作と試行錯誤の知識が必要です。これらのビデオはあなたを助けるかもしれません:

  • Systraceを使用したパフォーマンス分析: https://youtu.be/9kNhB_z704I
  • Android Studioのシステムトレースに関するアプリのパフォーマンスの問題のトラブルシューティング(これはAndroid Studioに焦点を当てています): https://youtu.be/EjmIit_amnE
  • アプリケーションパフォーマンスのデバッグ(これは少し古く、従来のsystraceツールを使用しています): https://youtu.be/qXVxuLvzKek