| #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(); |