Add flag to print more condensed build stats

The new flag is called --experimental_stats_summary. I do not consider
this flag an incompatible change, since we don't guarantee the exact
text output on the command-line. The intent is to switch to the new
summary style and then retire the flag.

The new stats look like this:
INFO: 5,000 processes: 1,000 remote, 1,000 local, 1,000 worker, 2,000 cached
INFO: Total action wall time 100.34s
INFO: Critical path 5.22s (setup 1.34s, wall time 3.89s)
INFO: Elapsed time 8.89s (loading 2.55s, execution 6.34s)

The breakdown in the last two lines follows the idea that we want to
distinguish between useful work and 'overhead':
- For the critical path breakdown, the wall time is the sum of all wall
  times of all actions on the critical path, whereas 'setup' refers to
  everything other than subprocess execution wall time.
- For the elapsed time breakdown, the execution time is the time of the
  execution phase (which in turn is determined by the critical path),
  whereas 'loading' refers to everything other than execution.

Terminology is hard and we're already using these terms to denote
different things. Suggestions welcome.

PiperOrigin-RevId: 222231747
4 files changed
tree: d5ce7c9c4bb341defd15678b895e7d1850e8759a
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .gitattributes
  9. .gitignore
  10. AUTHORS
  11. BUILD
  12. CHANGELOG.md
  13. CODEOWNERS
  14. combine_distfiles.py
  15. combine_distfiles_to_tar.sh
  16. compile.sh
  17. CONTRIBUTING.md
  18. CONTRIBUTORS
  19. distdir.bzl
  20. ISSUE_TEMPLATE.md
  21. LICENSE
  22. README.md
  23. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.