Skip to content

Commit 385eb81

Browse files
committed
Speed up input generating functions for benchmark tests
1 parent bbcd352 commit 385eb81

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

libcxx/test/benchmarks/GenerateInput.h

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,39 +45,41 @@ inline std::string getRandomString(std::size_t Len) {
4545
}
4646

4747
template <class IntT>
48-
inline std::vector<IntT> getDuplicateIntegerInputs(size_t N) {
48+
inline std::vector<IntT> getDuplicateIntegerInputs(std::size_t N) {
4949
std::vector<IntT> inputs(N, static_cast<IntT>(-1));
5050
return inputs;
5151
}
5252

5353
template <class IntT>
54-
inline std::vector<IntT> getSortedIntegerInputs(size_t N) {
54+
inline std::vector<IntT> getSortedIntegerInputs(std::size_t N) {
5555
std::vector<IntT> inputs;
56-
for (size_t i = 0; i < N; i += 1)
56+
inputs.reserve(N);
57+
for (std::size_t i = 0; i < N; i += 1)
5758
inputs.push_back(i);
5859
return inputs;
5960
}
6061

6162
template <class IntT>
62-
std::vector<IntT> getSortedLargeIntegerInputs(size_t N) {
63+
std::vector<IntT> getSortedLargeIntegerInputs(std::size_t N) {
6364
std::vector<IntT> inputs;
64-
for (size_t i = 0; i < N; ++i) {
65+
inputs.reserve(N);
66+
for (std::size_t i = 0; i < N; ++i)
6567
inputs.push_back(i + N);
66-
}
6768
return inputs;
6869
}
6970

7071
template <class IntT>
71-
std::vector<IntT> getSortedTopBitsIntegerInputs(size_t N) {
72+
std::vector<IntT> getSortedTopBitsIntegerInputs(std::size_t N) {
7273
std::vector<IntT> inputs = getSortedIntegerInputs<IntT>(N);
7374
for (auto& E : inputs)
7475
E <<= ((sizeof(IntT) / 2) * CHAR_BIT);
7576
return inputs;
7677
}
7778

7879
template <class IntT>
79-
inline std::vector<IntT> getReverseSortedIntegerInputs(size_t N) {
80+
inline std::vector<IntT> getReverseSortedIntegerInputs(std::size_t N) {
8081
std::vector<IntT> inputs;
82+
inputs.reserve(N);
8183
std::size_t i = N;
8284
while (i > 0) {
8385
--i;
@@ -87,61 +89,61 @@ inline std::vector<IntT> getReverseSortedIntegerInputs(size_t N) {
8789
}
8890

8991
template <class IntT>
90-
std::vector<IntT> getPipeOrganIntegerInputs(size_t N) {
92+
std::vector<IntT> getPipeOrganIntegerInputs(std::size_t N) {
9193
std::vector<IntT> v;
9294
v.reserve(N);
93-
for (size_t i = 0; i < N / 2; ++i)
95+
for (std::size_t i = 0; i < N / 2; ++i)
9496
v.push_back(i);
95-
for (size_t i = N / 2; i < N; ++i)
97+
for (std::size_t i = N / 2; i < N; ++i)
9698
v.push_back(N - i);
9799
return v;
98100
}
99101

100102
template <class IntT>
101-
std::vector<IntT> getRandomIntegerInputs(size_t N) {
103+
std::vector<IntT> getRandomIntegerInputs(std::size_t N) {
102104
std::vector<IntT> inputs;
103-
for (size_t i = 0; i < N; ++i) {
105+
inputs.reserve(N);
106+
for (std::size_t i = 0; i < N; ++i)
104107
inputs.push_back(getRandomInteger<IntT>(0, std::numeric_limits<IntT>::max()));
105-
}
106108
return inputs;
107109
}
108110

109-
inline std::vector<std::string> getDuplicateStringInputs(size_t N) {
111+
inline std::vector<std::string> getDuplicateStringInputs(std::size_t N) {
110112
std::vector<std::string> inputs(N, getRandomString(1024));
111113
return inputs;
112114
}
113115

114-
inline std::vector<std::string> getRandomStringInputs(size_t N) {
116+
inline std::vector<std::string> getRandomStringInputs(std::size_t N) {
115117
std::vector<std::string> inputs;
116-
for (size_t i = 0; i < N; ++i) {
118+
inputs.reserve(N);
119+
for (std::size_t i = 0; i < N; ++i)
117120
inputs.push_back(getRandomString(1024));
118-
}
119121
return inputs;
120122
}
121123

122-
inline std::vector<std::string> getPrefixedRandomStringInputs(size_t N) {
124+
inline std::vector<std::string> getPrefixedRandomStringInputs(std::size_t N) {
123125
std::vector<std::string> inputs;
126+
inputs.reserve(N);
124127
constexpr int kSuffixLength = 32;
125128
const std::string prefix = getRandomString(1024 - kSuffixLength);
126-
for (size_t i = 0; i < N; ++i) {
129+
for (std::size_t i = 0; i < N; ++i)
127130
inputs.push_back(prefix + getRandomString(kSuffixLength));
128-
}
129131
return inputs;
130132
}
131133

132-
inline std::vector<std::string> getSortedStringInputs(size_t N) {
134+
inline std::vector<std::string> getSortedStringInputs(std::size_t N) {
133135
std::vector<std::string> inputs = getRandomStringInputs(N);
134136
std::sort(inputs.begin(), inputs.end());
135137
return inputs;
136138
}
137139

138-
inline std::vector<std::string> getReverseSortedStringInputs(size_t N) {
140+
inline std::vector<std::string> getReverseSortedStringInputs(std::size_t N) {
139141
std::vector<std::string> inputs = getSortedStringInputs(N);
140142
std::reverse(inputs.begin(), inputs.end());
141143
return inputs;
142144
}
143145

144-
inline std::vector<const char*> getRandomCStringInputs(size_t N) {
146+
inline std::vector<const char*> getRandomCStringInputs(std::size_t N) {
145147
static std::vector<std::string> inputs = getRandomStringInputs(N);
146148
std::vector<const char*> cinputs;
147149
for (auto const& str : inputs)

0 commit comments

Comments
 (0)