Android カレンダー チームがベースライン プロファイルを使用してアプリの起動とジャンクを改善した方法

ベースライン プロファイルにより、コードの実行速度が最大 30% 向上 インタープリタとジャストインタイム(JIT)コンパイル 手順 一般的なユーザージャーニーの トラブルシューティングを行えますベースライン プロファイルを使用すると、ユーザー ジャーニーを アプリの起動の改善やジャンクの削減などに役立つ ユーザー維持率や評価などのビジネス指標の向上につながります。 ベースラインの詳細 プロファイル

Android カレンダー チームはベースライン プロファイルを実装し、約 20% のアプリが確認されました。 起動時間が短縮され、遅いフレームやフリーズしたフレームが約 50% 減少しました。こちらが パフォーマンス面の成功を達成するために何を エンドツーエンドで行ったのか 影響の測定方法にベースライン プロファイルを使用することにしました。

クラウド プロファイルとベースライン プロファイル

Android のカレンダー チームはすでに Cloud プロファイルでは、 は、実際のユーザーに基づくプロファイルに基づく最適化(PGO)手法の 1 つです。 記録します。クラウド プロファイルとベースライン プロファイルが 比較:

プロファイル タイプ 設定 含まれるユーザー ジャーニー ユーザーベースが次の場合に最適に機能 実現した効果 サポートされている Android バージョン

クラウド プロファイル

デフォルトで有効

実際のユーザーデータに基づき自動的に選択

数日以内

Android 9(API レベル 28)以降

ベースライン プロファイル

自分で構成

自分で選択

すべてのサイズ

即時

Android 7(API レベル 24)以降

Android カレンダー チームがベースライン プロファイルを追加した主な理由の 1 つは、 より速い週次リリースサイクルに移行していたからです。 クラウド プロファイルを使用するとパフォーマンスが大幅に向上しますが、これには 1 ~ 2 日かかります アプリのリリース後に最大限の効果を得るのに 現実のユーザーデータを集約できます。クラウド プロファイルをベースラインで補完する プロファイルにより、ユーザーが最高のパフォーマンス向上を実感する時間が長くなる リリースする前に確認できます

さらに、Android カレンダー チームが次のことを行えるようにすることも重要でした。 対象とするクリティカル ユーザー ジャーニー(CUJ)を これは、ベースライン プロファイルを使用して行うことができます。

通常は、クラウド プロファイルに加えてベースライン プロファイルを使用することをおすすめします。 パフォーマンスが最大限に高まるようにする必要があります。

含まれるユーザー ジャーニー

Android カレンダー チームは、ベースライン プロファイルに次の 2 つの CUJ を含めることにしました。

  • スケジュール ビューでのアプリの起動: 最初はデフォルト ビューなので、 アプリを初めて使用するユーザーや できます。
  • [月] ビューでアプリを開く: ユーザーに基づいて、多くのユーザー向けに選択されたビュー 分析できますユーザーがどのようにアプリを使用しているかを追跡するには、 Firebase

一般的に、ビジネスにとって収益性の高い CUJ を追加する必要があります( CUJ などがあります。P-MAX を選択すると 最適化する CUJ。最適化する CUJ 一致します

実装

Android カレンダー チームは、Android アプリの Jetpack Macrobenchmark ライブラリ ベースライン プロファイルを生成して、社内ツールやリソースとの統合を容易に 一般的なスケーラビリティは重要です

スケジュールどおりにアプリを起動するための Macrobenchmark テスト構成は次のとおりです view:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

管理されたリリースを使用して影響を測定する

ベースライン プロファイルは、同梱される APK と密接に結びついているため、 組み込まれていないと、標準的な A/B テストを実行できない その影響を把握できますAndroid カレンダー チームは 管理されたリリースを使用して影響を正確に測定し、 一部のユーザーにのみ新しいバージョンをリリースし、 以前のリリースと類似したバージョンのユーザーに リリースされます

ベースライン プロファイルを使用すると、次のような 複数の領域で改善が行われています。これらの統計情報は、さまざまなデータ すべてのユーザー(スケジュール ビューと月ビューで開始したユーザー) ユーザーも大きなメリットを得られますが、他にも次のようなメリットがあります。 カレンダー データの読み込みなど、共有プロセスの最適化 データベースです

  • インタラクティブ アプリの起動(最も一般的なシナリオ)のレイテンシの中央値が 775 ミリ秒~ 644 ミリ秒(17%)
  • コールド スタート レイテンシの中央値が 1,058 ミリ秒から 901 ミリ秒(15%)に減少
  • ウォーム スタート レイテンシの中央値が 453 ミリ秒から 378 ミリ秒に減少(17%)
  • スケジュール視聴回数と月視聴回数でジャンクのあるフレームレートの中央値が 42 ~ 60% 減少

クラウド プロファイルをベースラインと併用する場合は、 プロファイルの改良点は、 最初の週にクラウド プロファイルが生成されるとき。ただし、 ベースライン プロファイルを他のものの上に置くことで、パフォーマンスの大幅な向上が観察される 確認できます

ツールや機能の詳細については、次のリソースをご覧ください。