commit | 5a41a2f420c4fbab906e40f7bd879d0ede6bc2b4 | [log] [tgz] |
---|---|---|
author | ulfjack <ulfjack@google.com> | Thu Jun 06 02:27:28 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Jun 06 02:28:28 2019 -0700 |
tree | a55ad84f3698e5cf6686e85fe7e75deac3bd4bae | |
parent | 13a71f112c2bd8a558fc0875ec8283826fc7f7c3 [diff] |
IncludeScanner: use includePool on spawn completion Previously, the ListenableFuture callback was running using a direct executor, which means it gets run in the thread that completes the remote spawn future. In some cases, this may be a much smaller thread pool, which can have a significant (negative) impact on build performance. Note that we primarily need to decouple the callback attached to the remote spawn future. Subsequent futures can use direct executor if we're reasonably sure that the attached-to future is already using the includePool and there's no additional performance win due to parallelism possible. There is one problem here, which is that we use a slack pool for include scanning, which does not guarantee decoupling, as it can reuse the caller thread if the pool is fully used; this does not seem to be a performance problem for the benchmark I tested. With this change, I see no significant performance difference between the sync and async include scanners. PiperOrigin-RevId: 251812988
{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.