blob: 75a7a284e072e85619e9663106b9599b30a242dc [file] [log] [blame]
Eric Fiselierfd2e3e92018-01-18 04:23:01 +00001#include "benchmark/benchmark.h"
Aditya Kumaraa356d62017-06-14 23:17:45 +00002
3#include <sstream>
4double __attribute__((noinline)) istream_numbers();
5
6double istream_numbers() {
7 const char *a[] = {
8 "-6 69 -71 2.4882e-02 -100 101 -2.00005 5000000 -50000000",
9 "-25 71 7 -9.3262e+01 -100 101 -2.00005 5000000 -50000000",
10 "-14 53 46 -6.7026e-02 -100 101 -2.00005 5000000 -50000000"
11 };
12
13 int a1, a2, a3, a4, a5, a6, a7;
14 double f1 = 0.0, f2 = 0.0, q = 0.0;
15 for (int i=0; i < 3; i++) {
16 std::istringstream s(a[i]);
17 s >> a1
18 >> a2
19 >> a3
20 >> f1
21 >> a4
22 >> a5
23 >> f2
24 >> a6
25 >> a7;
26 q += (a1 + a2 + a3 + a4 + a5 + a6 + a7 + f1 + f2)/1000000;
27 }
28 return q;
29}
30
31static void BM_Istream_numbers(benchmark::State &state) {
32 double i = 0;
33 while (state.KeepRunning())
34 benchmark::DoNotOptimize(i += istream_numbers());
35}
36
37BENCHMARK(BM_Istream_numbers)->RangeMultiplier(2)->Range(1024, 4096);
Eric Fiselierfd2e3e92018-01-18 04:23:01 +000038BENCHMARK_MAIN();