Skip to content

Benchmarks - #3606

Open
Konstantin (terrakok) wants to merge 45 commits into
jb-mainfrom
benchmarks
Open

Konstantin (terrakok) wants to merge 45 commits into
jb-mainfrom
benchmarks

Conversation

@terrakok

Copy link
Copy Markdown
Member

Introduce a standalone Compose Multiplatform benchmarking project in compose/mpp/benchmarks to measure and compare startup and rendering performance across Compose and Kotlin versions.

  • Support JVM, macOS ARM64, iOS ARM64 Simulator, JS, and WasmJS targets.
  • Add reusable benchmark cases and four measurement modes: application startup, real UI frame timing, average offscreen rendering, and per-frame offscreen rendering.
  • Add a command-line launcher with version, target, and browser matrices, configurable repetitions and timeouts, input validation, and process cleanup.
  • Support benchmarking both published Compose versions and local core sources.
  • Collect JSON results, logs, environment metadata, and test parameters, and generate interactive HTML reports with comparison charts, frame-time distributions, and links to raw results.
  • Add manually triggered GitHub Actions workflows for JVM, iOS, and web benchmarks.
  • Document how to run benchmarks and add new cases.

Testing

Smoke test from the repository root:

./run-benchmarks.sh --target jvm \
  --compose-version local \
  --tests LazyGrid \
  --modes startup realFrames averageFrame fps \
  --repeat 1 \
  --output-dir /tmp/compose-benchmark-results

Verify that the session directory contains an HTML report, JSON results, environment metadata, and logs.

Release Notes

N/A

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant