#include "benchmark/benchmark.h" #include <sstream> double __attribute__((noinline)) 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();