From 540e833419b25af9122b8c942eeb9519cf7e6cfd Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Fri, 6 Dec 2024 10:08:10 +0100 Subject: Remove redundant copies from BazelApi::IsAvailable ...and ignore non-requested digests. --- src/buildtool/execution_api/remote/bazel/bazel_api.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/buildtool/execution_api/remote/bazel/bazel_api.cpp') diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index 6aa8b938..d523fbed 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -604,17 +604,20 @@ auto BazelApi::CreateAction( -> std::vector { std::vector bazel_digests; bazel_digests.reserve(digests.size()); - std::unordered_map digest_map; + std::unordered_map digest_map; for (auto const& digest : digests) { auto const& bazel_digest = bazel_digests.emplace_back(ArtifactDigestFactory::ToBazel(digest)); - digest_map[bazel_digest] = digest; + digest_map.insert_or_assign(bazel_digest, &digest); } - auto bazel_result = network_->IsAvailable(bazel_digests); + auto const bazel_result = network_->IsAvailable(bazel_digests); std::vector result; result.reserve(bazel_result.size()); for (auto const& bazel_digest : bazel_result) { - result.push_back(digest_map[bazel_digest]); + auto it = digest_map.find(bazel_digest); + if (it != digest_map.end()) { + result.push_back(*it->second); + } } return result; } -- cgit v1.2.3