From 2b4e781e2e14653201b81b12e1b332a7462691b7 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Thu, 27 Feb 2025 12:43:07 +0100 Subject: GraphTraverser: Pass blobs to UploadBlobs by rvalue ...in order to avoid copying while uploading. --- src/buildtool/graph_traverser/graph_traverser.hpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp index 9dc32b61..b85902be 100644 --- a/src/buildtool/graph_traverser/graph_traverser.hpp +++ b/src/buildtool/graph_traverser/graph_traverser.hpp @@ -313,22 +313,19 @@ class GraphTraverser { /// of the uploads fails, execution is terminated /// \param[in] blobs blobs to be uploaded [[nodiscard]] auto UploadBlobs( - std::vector const& blobs) const noexcept -> bool { + std::vector&& blobs) const noexcept -> bool { std::unordered_set container; HashFunction const hash_function{context_.apis->remote->GetHashType()}; - for (auto const& content : blobs) { + for (auto& content : blobs) { auto blob = ArtifactBlob::FromMemory( - hash_function, ObjectType::File, content); + hash_function, ObjectType::File, std::move(content)); if (not blob.has_value()) { - logger_->Emit(LogLevel::Trace, - "Failed to create ArtifactBlob for:\n{}", - nlohmann::json(content).dump()); + logger_->Emit(LogLevel::Trace, "Failed to create ArtifactBlob"); return false; } Logger::Log(logger_, LogLevel::Trace, [&]() { return fmt::format( - "Will upload blob {}, its digest has id {} and size {}.", - nlohmann::json(content).dump(), + "Will upload blob, its digest has id {} and size {}.", blob->GetDigest().hash(), blob->GetDigest().size()); }); @@ -507,7 +504,7 @@ class GraphTraverser { std::tuple, std::vector, std::vector>> { - if (not UploadBlobs(blobs)) { + if (not UploadBlobs(std::move(blobs))) { return std::nullopt; } -- cgit v1.2.3