mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 02:06:06 +00:00
[libc++] Add a benchmark for std::num_get
This commit is contained in:
parent
eaf67e062c
commit
c5492e3c65
44
libcxx/test/benchmarks/locale/num_get.bench.cpp
Normal file
44
libcxx/test/benchmarks/locale/num_get.bench.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <ios>
|
||||
#include <locale>
|
||||
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
struct num_get : std::num_get<char, std::string::iterator> {};
|
||||
|
||||
template <class T>
|
||||
void BM_num_get(benchmark::State& state) {
|
||||
auto val = std::string("123");
|
||||
std::ios ios(nullptr);
|
||||
num_get np;
|
||||
|
||||
for (auto _ : state) {
|
||||
benchmark::DoNotOptimize(val);
|
||||
T out;
|
||||
std::ios_base::iostate err = ios.goodbit;
|
||||
benchmark::DoNotOptimize(np.get(val.begin(), val.end(), ios, err, out));
|
||||
benchmark::DoNotOptimize(out);
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK(BM_num_get<bool>);
|
||||
BENCHMARK(BM_num_get<long>);
|
||||
BENCHMARK(BM_num_get<long long>);
|
||||
BENCHMARK(BM_num_get<unsigned short>);
|
||||
BENCHMARK(BM_num_get<unsigned int>);
|
||||
BENCHMARK(BM_num_get<unsigned long>);
|
||||
BENCHMARK(BM_num_get<unsigned long long>);
|
||||
BENCHMARK(BM_num_get<float>);
|
||||
BENCHMARK(BM_num_get<double>);
|
||||
BENCHMARK(BM_num_get<long double>);
|
||||
BENCHMARK(BM_num_get<void*>);
|
||||
|
||||
BENCHMARK_MAIN();
|
Loading…
x
Reference in New Issue
Block a user