From 300663a190537cfd2692003dc4af0aebb904bde0 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 23 May 2024 12:27:38 -0700 Subject: [PATCH] [memprof] Use std::move in toMemProfRecord (#93133) std::move and reserve here result in a measurable speed-up in llvm-profdata modified to deserialize all MemProfRecords. The cycle count goes down by 7.1% while the instruction count goes down by 21%. --- llvm/lib/ProfileData/MemProf.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/ProfileData/MemProf.cpp b/llvm/lib/ProfileData/MemProf.cpp index f5789186094c64..5c86c0d9c7bbbf 100644 --- a/llvm/lib/ProfileData/MemProf.cpp +++ b/llvm/lib/ProfileData/MemProf.cpp @@ -247,13 +247,15 @@ MemProfRecord IndexedMemProfRecord::toMemProfRecord( Callback) const { MemProfRecord Record; + Record.AllocSites.reserve(AllocSites.size()); for (const memprof::IndexedAllocationInfo &IndexedAI : AllocSites) { memprof::AllocationInfo AI; AI.Info = IndexedAI.Info; AI.CallStack = Callback(IndexedAI.CSId); - Record.AllocSites.push_back(AI); + Record.AllocSites.push_back(std::move(AI)); } + Record.CallSites.reserve(CallSiteIds.size()); for (memprof::CallStackId CSId : CallSiteIds) Record.CallSites.push_back(Callback(CSId));