| #include "benchmark/benchmark.h" | |
| #include "test_macros.h" | |
| #include <sstream> | |
| TEST_NOINLINE double istream_numbers(); | |
| double istream_numbers() { | |
| const char *a[] = { | |
| "-6 69 -71 2.4882e-02 -100 101 -2.00005 5000000 -50000000", | |
| "-25 71 7 -9.3262e+01 -100 101 -2.00005 5000000 -50000000", | |
| "-14 53 46 -6.7026e-02 -100 101 -2.00005 5000000 -50000000" | |
| }; | |
| int a1, a2, a3, a4, a5, a6, a7; | |
| double f1 = 0.0, f2 = 0.0, q = 0.0; | |
| for (int i=0; i < 3; i++) { | |
| std::istringstream s(a[i]); | |
| s >> a1 | |
| >> a2 | |
| >> a3 | |
| >> f1 | |
| >> a4 | |
| >> a5 | |
| >> f2 | |
| >> a6 | |
| >> a7; | |
| q += (a1 + a2 + a3 + a4 + a5 + a6 + a7 + f1 + f2)/1000000; | |
| } | |
| return q; | |
| } | |
| static void BM_Istream_numbers(benchmark::State &state) { | |
| double i = 0; | |
| while (state.KeepRunning()) | |
| benchmark::DoNotOptimize(i += istream_numbers()); | |
| } | |
| BENCHMARK(BM_Istream_numbers)->RangeMultiplier(2)->Range(1024, 4096); | |
| BENCHMARK_MAIN(); |