Upgrade to Pro — share decks privately, control downloads, hide ads and more …

いかにしてアプリの起動時間を改善するか

haru067
October 10, 2021

 いかにしてアプリの起動時間を改善するか

haru067

October 10, 2021
Tweet

More Decks by haru067

Other Decks in Programming

Transcript

  1. アプリ起動時に起きること Android Developers - App startup time https://developer.android.com/topic/performance/vitals/launch-time Application 


    onCreate Activity 
 init その他 Activity 
 onCreate in fl ate views, etc ただし、毎回全てが発生するわけではない 時間
  2. Android Vitalsにおける起動パターン アプリの安定性とパフォーマンスを改善するためのGoogleの取り組みとして、 
 Android Vitalsがあり、Vitalsでは3つの起動パターンを紹介している • Cold start •

    Warm start • Hot start 完全にまっさらな状態からの起動 部分的な起動(例:バックキーで戻ってからの再起動) アクティビティをフォアグラウンドにすることで起動
  3. • Cold start • Warm start • Hot start で、これらをどうすればいいの?

    Android Vitalsでは、次の場合に遅いとみなされる 5秒以上 2秒以上 1.5秒以上 どれをなおせばいいの? coldを想定するのが良い。なぜならcoldの中にwarmとhotも含まれているから
  4. 眺める:Jetpack MacroBenchmark (2021.10現在) alpha版、Android 10(API 29)以上 テストを実行する形で起動時間を計測することができる • cold/warm/hot start

    の計測 • 繰り返しの実行、その中央値などの計測 • テスト結果をトレースファイルとして閲覧 ここでは雰囲気程度に使い方を紹介します 
 (詳細は公式ドキュメントを参照してください)
  5. 眺める:logcatでの計測 ActivityTaskManagerがlogcatに起動時間を出力している • I/ActivityTaskManager: Displayed com.myapp/.MainActivity: +256ms 最初の描画までにかかった時間(Displayed time) I/ActivityTaskManager:

    Fully drawn com.myapp/.MainActivity: +5s192ms Activity.reportFullyDrawn()が呼ばれるまでの時間 Activity.reportFullyDrawn()は手動で呼んであげる必要あり
  6. 図で Application 
 onCreate Activity 
 init その他 Activity 


    onCreate in fl ate views, etc Displayed time Fully Drawn
  7. CPU Profilerの使い方 Pro fi leボタン(or Run → Pro fi le

    'app')で実行 Pro fi leタブにプロファイルの様子が表示されるので、起動が完了したら止める
  8. まとめ • 3種の起動パターン: cold/warm/hot start、まずはcoldから改善していくの がオススメ • 計測より始めよ • 3つの計測:

    大雑把に怪しい箇所を見つけ、詳細を調べ、実際のユーザーにおける 起動時間が改善しているか確認する • 計測ツール: MacroBenchmark, logcat, CPU Pro fi ler, Firebase Performance Monitoring • 速くするだけでなく、「遅くしない」ための監視も頑張ろう