Home | History | Annotate | Download | only in benchmarks
      1 #include "benchmark/benchmark.h"
      2 #include "test_macros.h"
      3 
      4 #include <sstream>
      5 
      6 TEST_NOINLINE double istream_numbers();
      7 
      8 double istream_numbers() {
      9   const char *a[] = {
     10     "-6  69 -71  2.4882e-02 -100 101 -2.00005 5000000 -50000000",
     11     "-25 71   7 -9.3262e+01 -100 101 -2.00005 5000000 -50000000",
     12     "-14 53  46 -6.7026e-02 -100 101 -2.00005 5000000 -50000000"
     13   };
     14 
     15   int a1, a2, a3, a4, a5, a6, a7;
     16   double f1 = 0.0, f2 = 0.0, q = 0.0;
     17   for (int i=0; i < 3; i++) {
     18     std::istringstream s(a[i]);
     19     s >> a1
     20       >> a2
     21       >> a3
     22       >> f1
     23       >> a4
     24       >> a5
     25       >> f2
     26       >> a6
     27       >> a7;
     28     q += (a1 + a2 + a3 + a4 + a5 + a6 + a7 + f1 + f2)/1000000;
     29   }
     30   return q;
     31 }
     32 
     33 static void BM_Istream_numbers(benchmark::State &state) {
     34   double i = 0;
     35   while (state.KeepRunning())
     36     benchmark::DoNotOptimize(i += istream_numbers());
     37 }
     38 
     39 BENCHMARK(BM_Istream_numbers)->RangeMultiplier(2)->Range(1024, 4096);
     40 BENCHMARK_MAIN();
     41