[ Web Proxy ]
URL:
Viewing: https://developer.android.com/develop/ui/compose/performance/herobenchmark [Back]  [Original]

Hero benchmarks  |  Jetpack Compose  |  Android Developers Skip to main content
Essentials Design & Plan Develop Google Play Blog
Search:
Android Studio
Android Developers [Android Developers]

Hero benchmarks Stay organized with collections Save and categorize content based on your preferences.

Hero benchmarks are a set of benchmarks that cover high-level app user journeys, such as app startup or scrolling in the open-source Pokedex app.

Test setup

Startup hero benchmarks

To measure startup, we used PokedexStartupBenchmark. The PokedexStartupBenchmark measures the time it takes for the Pokedex app to be visible to the user.

App launch can take place in one of three states: cold start, warm start, or hot start. Each state affects how long it takes for an app to become visible to the user. In a cold start, the app starts from scratch. In this benchmark, we measure the app launch performance in cold start state. We recommend that you always optimize the app based on an assumption of a cold start. Doing so can improve the performance of warm and hot starts as well.

The metrics we use to measure the app startup time are time to initial display and the time to full display.

Note: Because of significant changes to the PokedexStartupBenchmark methodology for Compose 1.11, the benchmark data is not shown for previous Compose versions.

Time to initial display

Time to initial display (TTID) measures the time it takes for an app to produce its first frame, including process initialization during a cold start, activity creation during a cold or warm start, and displaying the first frame.

In the PokedexStartupBenchmark, Compose 1.11 is 2.5% slower than Views for TTID with a cold start.

Compose 1.11 is 2.5% slower than Views for TTID [Compose 1.11 is 2.5% slower than Views for TTID] Figure 1: Compose 1.11 compared to Views for TTID.

Time to full display

Time to full display (TTFD) measures the time until the app becomes interactive. This means that all data has been loaded and has been drawn. For more information about time to full display, see App Startup Time.

In the PokedexStartupBenchmark, Compose 1.11 is 13.0% slower than Views for TTFD with a cold start.

Compose 1.11 is 13.0% slower than Views for TTFD [Compose 1.11 is 13.0% slower than Views for TTFD] Figure 2: Compose 1.11 compared to Views for TTFD. Note: The Compose team is actively working to improve the startup latency. For more details about upcoming improvements in Compose performance, see the Compose roadmap.

Scroll hero benchmarks

To measure the scrolling performance we used the PokedexScrollBenchmark. It measures the scroll performance of the Pokedex app screen for a lazy grid with images. In this benchmark, the entire screen is scrolled and flung multiple times and new items are loaded. Scroll performance is measured by jank rate.

Jank rate

Android devices render at up to 60 or 120 frames per second (fps). This means the system has a strict deadline (for example, 16.6ms for 60fps) to produce a frame. If the app takes too long to do its work, this can cause a visible stutter that we call jank.

In the PokedexScrollBenchmark, Compose and Views achieve the same performance of 0.21% jank since Compose 1.9.0. In absolute terms, 1 out of 485 frames were janky.

Note: To ensure conservative reporting, we used the scenario with the highest UI and frame-rendering complexity as our representative result.

These benchmarks show that Compose 1.9 and later match the Views performance for jank while scrolling.

Since Compose 1.9.0, Compose and Views have the same jank rate [Since Compose 1.9.0, Compose and Views have the same jank rate] Since Compose 1.9.0, Compose and Views have the same jank rate.

Run hero benchmarks

To validate the performance results and run the benchmarks locally:

  1. Follow the AndroidX guide to check out the source code.
  2. Follow the instructions in the Hero Benchmarks source code.

You can run these benchmarks on any supported device, such as a specific device that you are optimizing your app for. However, to validate the official results, use the same hardware setup.

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026-05-15 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-05-15 UTC."],[],[]]

Web Proxy Viewer  |  New URL  |  Original Page