[RISCV][NFC] precommit for D159399
[llvm-project.git] / libcxx / benchmarks / stringstream.bench.cpp
blobea602557ccd770e3833f77bd549ae262ceedc47e
1 #include "benchmark/benchmark.h"
2 #include "test_macros.h"
4 #include <sstream>
6 TEST_NOINLINE double istream_numbers();
8 double istream_numbers() {
9 const char* a[] = {"-6 69 -71 2.4882e-02 -100 101 -2.00005 5000000 -50000000",
10 "-25 71 7 -9.3262e+01 -100 101 -2.00005 5000000 -50000000",
11 "-14 53 46 -6.7026e-02 -100 101 -2.00005 5000000 -50000000"};
13 int a1, a2, a3, a4, a5, a6, a7;
14 double f1 = 0.0, f2 = 0.0, q = 0.0;
15 for (int i = 0; i < 3; i++) {
16 std::istringstream s(a[i]);
17 s >> a1 >> a2 >> a3 >> f1 >> a4 >> a5 >> f2 >> a6 >> a7;
18 q += (a1 + a2 + a3 + a4 + a5 + a6 + a7 + f1 + f2) / 1000000;
20 return q;
23 static void BM_Istream_numbers(benchmark::State& state) {
24 double i = 0;
25 while (state.KeepRunning())
26 benchmark::DoNotOptimize(i += istream_numbers());
29 BENCHMARK(BM_Istream_numbers)->RangeMultiplier(2)->Range(1024, 4096);
30 BENCHMARK_MAIN();