diff options
author | Kazu Hirata <kazu@google.com> | 2024-11-24 21:08:54 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-24 21:08:54 -0800 |
commit | ff7b42c194e0fa23e6a76f0a33a80c0c3af14e7d (patch) | |
tree | 1420d356236d4a090ea76ea38a254a589ced5168 /llvm/unittests/ProfileData/MemProfTest.cpp | |
parent | 9e3215ac167b80dcf51d6693ecdd6275c4e89954 (diff) | |
download | llvm-ff7b42c194e0fa23e6a76f0a33a80c0c3af14e7d.zip llvm-ff7b42c194e0fa23e6a76f0a33a80c0c3af14e7d.tar.gz llvm-ff7b42c194e0fa23e6a76f0a33a80c0c3af14e7d.tar.bz2 |
[memprof] Speed up llvm-profdata (#117446)
CallStackRadixTreeBuilder::build takes the parameter
MemProfFrameIndexes by value, involving copies:
std::optional<const llvm::DenseMap<FrameIdTy, LinearFrameId>>
MemProfFrameIndexes
Then "build" makes another copy of MemProfFrameIndexe and passes it to
encodeCallStack for every call stack, which is painfully slow.
This patch changes the type to a pointer so that we don't have to make
a copy every time we pass the argument.
Without this patch, it takes 553 seconds to run "llvm-profdata merge"
on a large MemProf raw profile. This patch shortenes that down to 67
seconds.
Diffstat (limited to 'llvm/unittests/ProfileData/MemProfTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/MemProfTest.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/unittests/ProfileData/MemProfTest.cpp b/llvm/unittests/ProfileData/MemProfTest.cpp index c3f35e4..7b9910e 100644 --- a/llvm/unittests/ProfileData/MemProfTest.cpp +++ b/llvm/unittests/ProfileData/MemProfTest.cpp @@ -628,7 +628,7 @@ TEST(MemProf, RadixTreeBuilderEmpty) { FrameHistogram = llvm::memprof::computeFrameHistogram<FrameId>(MemProfCallStackData); llvm::memprof::CallStackRadixTreeBuilder<FrameId> Builder; - Builder.build(std::move(MemProfCallStackData), MemProfFrameIndexes, + Builder.build(std::move(MemProfCallStackData), &MemProfFrameIndexes, FrameHistogram); ASSERT_THAT(Builder.getRadixArray(), testing::IsEmpty()); const auto Mappings = Builder.takeCallStackPos(); @@ -646,7 +646,7 @@ TEST(MemProf, RadixTreeBuilderOne) { FrameHistogram = llvm::memprof::computeFrameHistogram<FrameId>(MemProfCallStackData); llvm::memprof::CallStackRadixTreeBuilder<FrameId> Builder; - Builder.build(std::move(MemProfCallStackData), MemProfFrameIndexes, + Builder.build(std::move(MemProfCallStackData), &MemProfFrameIndexes, FrameHistogram); EXPECT_THAT(Builder.getRadixArray(), testing::ElementsAreArray({ 3U, // Size of CS1, @@ -673,7 +673,7 @@ TEST(MemProf, RadixTreeBuilderTwo) { FrameHistogram = llvm::memprof::computeFrameHistogram<FrameId>(MemProfCallStackData); llvm::memprof::CallStackRadixTreeBuilder<FrameId> Builder; - Builder.build(std::move(MemProfCallStackData), MemProfFrameIndexes, + Builder.build(std::move(MemProfCallStackData), &MemProfFrameIndexes, FrameHistogram); EXPECT_THAT(Builder.getRadixArray(), testing::ElementsAreArray({ @@ -711,7 +711,7 @@ TEST(MemProf, RadixTreeBuilderSuccessiveJumps) { FrameHistogram = llvm::memprof::computeFrameHistogram<FrameId>(MemProfCallStackData); llvm::memprof::CallStackRadixTreeBuilder<FrameId> Builder; - Builder.build(std::move(MemProfCallStackData), MemProfFrameIndexes, + Builder.build(std::move(MemProfCallStackData), &MemProfFrameIndexes, FrameHistogram); EXPECT_THAT(Builder.getRadixArray(), testing::ElementsAreArray({ |