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