tree: be0233d9b94e2dac963ea3f5221b6e6194745b5b [path history] [tgz]
  1. libsupersize/
  2. .style.yapf
  3. BUILD.gn
  4. create_patched_supersize_diff.py
  5. diagnose_bloat.py
  6. DIR_METADATA
  7. find_large_commits.py
  8. generate_commit_size_analysis.py
  9. generate_milestone_reports.py
  10. generate_official_build_report.py
  11. html_report_faq.md
  12. milestone_apk_sizes.py
  13. OWNERS
  14. PRESUBMIT.py
  15. print_trybot_sizes.py
  16. README.md
  17. sizes.gni
  18. sizes.py
  19. sizes.pydeps
  20. supersize
  21. supersize.json
  22. supersize.pydeps
  23. trybot_commit_size_checker.py
  24. trybot_commit_size_checker_test.py
tools/binary_size/README.md

Tools for Analyzing Chrome's Binary Size

These tools currently focus on supporting Android. They somewhat work with Linux builds. As for Windows, some great tools already exist and are documented here:

There is also a dedicated mailing-list for binary size discussions:

Bugs and feature requests are tracked in issues.chromium.org under:

Per-Milestone Binary Size Breakdowns:

Guide to dealing with chrome-perf size alerts:

Binary Size Trybot (android-binary-size)

  • Introduced October 2018 as a mandatory CQ bot.
  • Documented here.

Binary Size Gerrit Plugin

  • Introduced February 2020 to surface results from android-binary-size.
  • Documented here.

resource_sizes.py

SuperSize

Collects, archives, and analyzes Chrome's binary size on Android. See //tools/binary_size/libsupersize/README.md.

diagnose_bloat.py

Determines the cause of binary size bloat between two commits. Works for Android and Linux (although Linux symbol diffs have issues, as noted below).

How it Works

  1. Builds multiple revisions using release GN args.
    • Default is to build just two revisions (before & after commit)
  2. Measures all outputs using resource_size.py and supersize.
  3. Saves & displays a breakdown of the difference in binary sizes.

Example Usage

# Build and diff monochrome_public_apk HEAD^ and HEAD.
tools/binary_size/diagnose_bloat.py HEAD -v

# Build and diff monochrome_apk HEAD^ and HEAD.
tools/binary_size/diagnose_bloat.py HEAD --enable-chrome-android-internal -v

# Build and diff monochrome_public_apk HEAD^ and HEAD without is_official_build.
tools/binary_size/diagnose_bloat.py HEAD --gn-args="is_official_build=false" -v

# Build and diff all contiguous revs in range BEFORE_REV..AFTER_REV for src/v8.
tools/binary_size/diagnose_bloat.py AFTER_REV --reference-rev BEFORE_REV --subrepo v8 --all -v

# Build and diff system_webview_apk HEAD^ and HEAD with arsc obfucstion disabled.
tools/binary_size/diagnose_bloat.py HEAD --target system_webview_apk --gn-args enable_arsc_obfuscation=false

# Display detailed usage info (there are many options).
tools/binary_size/diagnose_bloat.py -h

Other Size Tools

Bloaty McBloatface