Chrome Release Bot (LUCI) 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
..
libsupersize 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
.style.yapf 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
BUILD.gn 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
DIR_METADATA 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
OWNERS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
PRESUBMIT.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
README.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
diagnose_bloat.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
find_large_commits.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
generate_commit_size_analysis.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
generate_milestone_reports.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
generate_official_build_report.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
html_report_faq.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
milestone_apk_sizes.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
print_trybot_sizes.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
sizes.gni 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
sizes.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
sizes.pydeps 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
supersize 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
supersize.json 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
supersize.pydeps 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
trybot_commit_size_checker.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago

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 crbug under:

Per-Milestone Binary Size Breakdowns:

Guide to dealing with chrome-perf size alerts:

[TOC]

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