commit | 207528cc5c56ed68869908802f296fd0ed696af2 | [log] [tgz] |
---|---|---|
author | Googler <noreply@google.com> | Fri Apr 12 12:46:46 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Apr 12 12:47:58 2019 -0700 |
tree | 25705c3d4175603b1adee38b4cd5339dd3a25f14 | |
parent | 19a151fad3a12e8d37f0ffbea05c231875adf8d9 [diff] |
Improve performance of BuildOptions#diff. Improvements come from: 1. Avoiding calls to BuildOptions#equals. When initializing the fingerprint and hash code, it does much of the same map iteration work that, if #equals returns false, is going to be done anyway in #diff. I haven't encountered a case where #equals returns true, but I've kept some inexpensive checks there just in case. 2. Not calling FragmentOptions#equals for similar reasons - it does the same map construction/iteration work that is going to be done anyway right after. Future work could be to try to maximize the chances of reference-equal FragmentOptions instances - right now we clone them a lot when they aren't going to be mutated. 3. Not calling OptionsDefinition#getOptionName, which is somewhat expensive because it looks up an annotation field. 4. Not calling FragmentOptions#asMap. The OptionsDefinitions are already in alphabetical order and are sufficient to obtain the values. PiperOrigin-RevId: 243314893
{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.
Follow our tutorials:
See CONTRIBUTING.md
Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.