xref: /openbsd-src/gnu/llvm/libcxx/benchmarks/monotonic_buffer.bench.cpp (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
1*4bdff4beSrobert //===----------------------------------------------------------------------===//
2*4bdff4beSrobert //
3*4bdff4beSrobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*4bdff4beSrobert // See https://llvm.org/LICENSE.txt for license information.
5*4bdff4beSrobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*4bdff4beSrobert //
7*4bdff4beSrobert //===----------------------------------------------------------------------===//
8*4bdff4beSrobert 
9*4bdff4beSrobert #include <list>
10*4bdff4beSrobert #include <memory_resource>
11*4bdff4beSrobert 
12*4bdff4beSrobert #include "benchmark/benchmark.h"
13*4bdff4beSrobert 
bm_list(benchmark::State & state)14*4bdff4beSrobert static void bm_list(benchmark::State& state) {
15*4bdff4beSrobert   char buffer[16384];
16*4bdff4beSrobert   std::pmr::monotonic_buffer_resource resource(buffer, sizeof(buffer));
17*4bdff4beSrobert   for (auto _ : state) {
18*4bdff4beSrobert     std::pmr::list<int> l(&resource);
19*4bdff4beSrobert     for (size_t i = 0; i != state.range(); ++i) {
20*4bdff4beSrobert       l.push_back(1);
21*4bdff4beSrobert       benchmark::DoNotOptimize(l);
22*4bdff4beSrobert     }
23*4bdff4beSrobert     resource.release();
24*4bdff4beSrobert   }
25*4bdff4beSrobert }
26*4bdff4beSrobert BENCHMARK(bm_list)->Range(1, 2048);
27*4bdff4beSrobert 
28*4bdff4beSrobert BENCHMARK_MAIN();
29