From c25e09e238c6f872a116d10bbefba0beff145a57 Mon Sep 17 00:00:00 2001 From: Peng Liu Date: Mon, 18 Nov 2024 10:32:54 -0500 Subject: [PATCH] [libc++][test] Speed up input generating functions for benchmark tests (#115544) The input generating functions for benchmark tests in the GenerateInput.h file can be slightly improved by invoking vector::reserve before calling vector::push_back. This slight performance improvement could potentially speed-up all benchmark tests for containers and algorithms that use these functions as inputs. --- libcxx/test/benchmarks/GenerateInput.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libcxx/test/benchmarks/GenerateInput.h b/libcxx/test/benchmarks/GenerateInput.h index 0f3e9309271b..db376614382b 100644 --- a/libcxx/test/benchmarks/GenerateInput.h +++ b/libcxx/test/benchmarks/GenerateInput.h @@ -53,6 +53,7 @@ inline std::vector getDuplicateIntegerInputs(std::size_t N) { template inline std::vector getSortedIntegerInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); for (std::size_t i = 0; i < N; i += 1) inputs.push_back(i); return inputs; @@ -61,6 +62,7 @@ inline std::vector getSortedIntegerInputs(std::size_t N) { template std::vector getSortedLargeIntegerInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); for (std::size_t i = 0; i < N; ++i) inputs.push_back(i + N); return inputs; @@ -77,6 +79,7 @@ std::vector getSortedTopBitsIntegerInputs(std::size_t N) { template inline std::vector getReverseSortedIntegerInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); std::size_t i = N; while (i > 0) { --i; @@ -99,6 +102,7 @@ std::vector getPipeOrganIntegerInputs(std::size_t N) { template std::vector getRandomIntegerInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); for (std::size_t i = 0; i < N; ++i) inputs.push_back(getRandomInteger(0, std::numeric_limits::max())); return inputs; @@ -111,6 +115,7 @@ inline std::vector getDuplicateStringInputs(std::size_t N) { inline std::vector getRandomStringInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); for (std::size_t i = 0; i < N; ++i) inputs.push_back(getRandomString(1024)); return inputs; @@ -118,6 +123,7 @@ inline std::vector getRandomStringInputs(std::size_t N) { inline std::vector getPrefixedRandomStringInputs(std::size_t N) { std::vector inputs; + inputs.reserve(N); constexpr int kSuffixLength = 32; const std::string prefix = getRandomString(1024 - kSuffixLength); for (std::size_t i = 0; i < N; ++i)