diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2015-09-29 17:17:24 -0400 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2015-09-30 09:24:42 -0400 |
commit | 7072c544b52774ac5a22835121e8e2747ad61158 (patch) | |
tree | 61bab3fc434f5c058ef43a73cf2cc3b4fd78661a /src/bench/Examples.cpp | |
parent | 535ed9223dcb32bf90ead5b2c95052838b780620 (diff) |
Support very-fast-running benchmarks
Avoid calling gettimeofday every time through the benchmarking loop, by keeping
track of how long each loop takes and doubling the number of iterations done
between time checks when they take less than 1/16'th of the total elapsed time.
Diffstat (limited to 'src/bench/Examples.cpp')
-rw-r--r-- | src/bench/Examples.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/bench/Examples.cpp b/src/bench/Examples.cpp new file mode 100644 index 0000000000..b6b020a971 --- /dev/null +++ b/src/bench/Examples.cpp @@ -0,0 +1,34 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "bench.h" +#include "main.h" +#include "utiltime.h" + +// Sanity test: this should loop ten times, and +// min/max/average should be close to 100ms. +static void Sleep100ms(benchmark::State& state) +{ + while (state.KeepRunning()) { + MilliSleep(100); + } +} + +BENCHMARK(Sleep100ms); + +// Extremely fast-running benchmark: +#include <math.h> + +volatile double sum = 0.0; // volatile, global so not optimized away + +static void Trig(benchmark::State& state) +{ + double d = 0.01; + while (state.KeepRunning()) { + sum += sin(d); + d += 0.000001; + } +} + +BENCHMARK(Trig); |