Skip to content

Commit d85cfc9

Browse files
committed
Add benchmark for iterating over the whole sequence
1 parent 0d84859 commit d85cfc9

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,27 @@ void sequence_container_benchmarks(std::string container) {
448448
}
449449
});
450450
}
451+
452+
/////////////////////////
453+
// General usage patterns
454+
/////////////////////////
455+
bench("iterate-whole-container", [cheap](auto& st) {
456+
auto const size = st.range(0);
457+
std::vector<ValueType> in;
458+
std::generate_n(std::back_inserter(in), size, cheap);
459+
DoNotOptimizeData(in);
460+
461+
Container c(in.begin(), in.end());
462+
DoNotOptimizeData(c);
463+
464+
auto use = [](auto& element) { benchmark::DoNotOptimize(element); };
465+
466+
for ([[maybe_unused]] auto _ : st) {
467+
for (auto it = c.begin(); it != c.end(); ++it) {
468+
use(*it);
469+
}
470+
}
471+
});
451472
}
452473

453474
} // namespace support

0 commit comments

Comments
 (0)