Jetpack Compose のパフォーマンス
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Jetpack Compose はすぐに使える優れたパフォーマンスを提供します。よくある問題を回避し、Compose アプリケーションのパフォーマンスを最適化できるように、ベスト プラクティスに従ってアプリを構成します。
主要なコンセプト
Compose のパフォーマンスに関する主なコンセプトは次のとおりです。
- フェーズ: Compose が UI を更新する方法を最適化するには、コンポジション、レイアウト、描画のフェーズを理解することが不可欠です。
- ベースライン プロファイル: これらのプロファイルは重要なコードをプリコンパイルします。これにより、アプリの起動が高速化され、操作がよりスムーズになります。
- 安定性: アプリの安定性を高め、不要な再コンポーズをより効率的にスキップし、パフォーマンスを向上させます。
アプリを適切に構成する
アプリのパフォーマンスが低い場合は、構成に問題がある可能性があります。まず、次の構成オプションを確認することをおすすめします。
- R8 を使用してリリースモードでビルドする: アプリをリリースモードで実行してみます。デバッグモードは多くの問題の検出に役立ちますが、パフォーマンス コストがかかり、他の問題を特定するのが困難になる可能性があります。また、リリースビルドのパフォーマンスと効率性を高めるため、R8 コンパイラを使用して最適化と圧縮を有効にする必要があります。
- ベースライン プロファイルを使用する: ベースライン プロファイルは、クリティカル ユーザー ジャーニー用にコードをプリコンパイルすることでパフォーマンスを改善します。Compose にはデフォルト プロファイルが含まれていますが、アプリ固有のプロファイルを作成することが理想的です。ベースライン プロファイルの詳細については、Android のパフォーマンスに関する一般的なドキュメントをご覧ください。
Compose アプリのパフォーマンスの測定と分析に役立つ一連のツールに慣れておく。
ベスト プラクティス
Compose を使用してアプリを開発する場合は、次のベスト プラクティスを念頭に置いてください。
詳しくは、ベスト プラクティス ガイドをご覧ください。
回視聴
Compose ではなくビューを使用する場合は、専用のレイアウト パフォーマンスの改善ガイドをご覧ください。
その他のリソース
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-26 UTC。
[null,null,["最終更新日 2025-07-26 UTC。"],[],[],null,["# Jetpack Compose Performance\n\nJetpack Compose delivers excellent performance out of the box. Configure your\napp using best practices to avoid common pitfalls and optimize your Compose\napplication's performance.\n\nKey concepts\n------------\n\nThese are some of the key concepts for performance in Compose:\n\n- **[Phases](/develop/ui/compose/performance/phases):** Understanding the composition, layout, and drawing phases is crucial for optimizing how Compose updates your UI.\n- **[Baseline Profiles](/develop/ui/compose/performance/baseline-profiles):** These profiles precompile essential code, leading to faster app launches and smoother interactions.\n- **[Stability](/develop/ui/compose/performance/stability):** Increase the stability of your app to more efficiently skip unnecessary recompositions, improving performance.\n\nProperly configure your app\n---------------------------\n\nIf your app is performing poorly, there might be a configuration problem. A good\nfirst step is to check the following configuration options:\n\n- **Build in Release Mode with R8:** Try running your app in [release\n mode](/studio/run#changing-variant). Debug mode is useful for spotting many problems, but it imposes a performance cost and can make it hard to spot other issues. You should also [enable optimizing and shrinking](/build/shrink-code#enable) with the R8 compiler to ensure a performant and efficient release build.\n- **Use Baseline Profiles:** Baseline Profiles improve performance by precompiling code for critical user journeys. Compose includes a default profile, but ideally, you should create an app-specific one as well. [Learn\n more about Baseline Profiles in the general Android performance docs](/topic/performance/baselineprofiles/overview)\n\nTools\n-----\n\nFamiliarize yourself with the suite of [tools](/develop/ui/compose/performance/tooling) available to help you measure\nand analyze your Compose app's performance.\n\nBest Practices\n--------------\n\nWhen developing your app with Compose, keep these best practices in mind:\n\n- **[Avoid expensive calculations](/develop/ui/compose/performance/bestpractices#use-remember):** Use `remember` to cache the results of expensive calculations.\n- **[Help lazy layouts](/develop/ui/compose/performance/bestpractices#use-lazylist-keys):** Provide stable keys to lazy layouts using the `key` parameter to minimize unnecessary recompositions.\n- **[Limit unnecessary recompositions](/develop/ui/compose/performance/bestpractices#use-derivedstateof):** Use `derivedStateOf` to limit recompositions when rapidly changing state.\n- **[Defer state reads](/develop/ui/compose/performance/bestpractices#defer-reads):** Defer state reads as long as possible by wrapping them in lambda functions.\n- **[Use lambda modifiers for changing state](/develop/ui/compose/performance/bestpractices#defer-reads):** Use lambda-based modifiers like `Modifier.offset { ... }` for frequently changing state variables.\n- **[Avoid backwards writes](/develop/ui/compose/performance/bestpractices#avoid-backwards):** Never write to state that has already been read in a composable.\n\nFor more details, see the [best practices](/develop/ui/compose/performance/bestpractices) guide.\n\nViews\n-----\n\nIf you are working with views instead of Compose, see the dedicated [Improve\nlayout performance](/develop/ui/views/layout/improving-layouts) guide.\n\nAdditional Resources\n--------------------\n\n- **[App performance guide](/topic/performance/overview)**: Discover best practices, libraries, and tools to improve performance on Android.\n- **[Inspect Performance](/topic/performance/inspecting-overview):** Inspect app performance.\n- **[Benchmarking](/topic/performance/benchmarking/benchmarking-overview):** Benchmark app performance.\n- **[App startup](/topic/performance/appstartup/analysis-optimization):** Optimize app startup.\n- **[Baseline profiles](/baseline-profiles):** Understand baseline profiles."]]