blob: 828ef4b405f47aca94622566abc0ea9e232895ab [file] [log] [blame]
Eric Fiselier87038cd2018-01-18 04:23:01 +00001#include "benchmark/benchmark.h"
Eric Fiselier3e9987e2018-10-10 18:22:23 +00002#include "test_macros.h"
Aditya Kumaraa866182017-06-14 23:17:45 +00003
4#include <sstream>
Eric Fiselier3e9987e2018-10-10 18:22:23 +00005
6TEST_NOINLINE double istream_numbers();
Aditya Kumaraa866182017-06-14 23:17:45 +00007
8double 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
33static void BM_Istream_numbers(benchmark::State &state) {
34 double i = 0;
35 while (state.KeepRunning())
36 benchmark::DoNotOptimize(i += istream_numbers());
37}
38
39BENCHMARK(BM_Istream_numbers)->RangeMultiplier(2)->Range(1024, 4096);
Eric Fiselier87038cd2018-01-18 04:23:01 +000040BENCHMARK_MAIN();