aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.bench.include
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2015-09-24 13:13:38 -0400
committerGavin Andresen <gavinandresen@gmail.com>2015-09-30 09:24:42 -0400
commit535ed9223dcb32bf90ead5b2c95052838b780620 (patch)
treed6902ff38a0e70595a85e00868da6fccc3b01152 /src/Makefile.bench.include
parent1a9f19a78daa392baf2e062bddff597ce0ce30b6 (diff)
downloadbitcoin-535ed9223dcb32bf90ead5b2c95052838b780620.tar.xz
Simple benchmarking framework
Benchmarking framework, loosely based on google's micro-benchmarking library (https://github.com/google/benchmark) Wny not use the Google Benchmark framework? Because adding Even More Dependencies isn't worth it. If we get a dozen or three benchmarks and need nanosecond-accurate timings of threaded code then switching to the full-blown Google Benchmark library should be considered. The benchmark framework is hard-coded to run each benchmark for one wall-clock second, and then spits out .csv-format timing information to stdout. It is left as an exercise for later (or maybe never) to add command-line arguments to specify which benchmark(s) to run, how long to run them for, how to format results, etc etc etc. Again, see the Google Benchmark framework for where that might end up. See src/bench/MilliSleep.cpp for a sanity-test benchmark that just benchmarks 'sleep 100 milliseconds.' To compile and run benchmarks: cd src; make bench Sample output: Benchmark,count,min,max,average Sleep100ms,10,0.101854,0.105059,0.103881
Diffstat (limited to 'src/Makefile.bench.include')
-rw-r--r--src/Makefile.bench.include45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/Makefile.bench.include b/src/Makefile.bench.include
new file mode 100644
index 0000000000..126e3a102f
--- /dev/null
+++ b/src/Makefile.bench.include
@@ -0,0 +1,45 @@
+bin_PROGRAMS += bench/bench_bitcoin
+BENCH_SRCDIR = bench
+BENCH_BINARY = bench/bench_bitcoin$(EXEEXT)
+
+
+bench_bench_bitcoin_SOURCES = \
+ bench/bench_bitcoin.cpp \
+ bench/bench.cpp \
+ bench/bench.h \
+ bench/MilliSleep.cpp
+
+bench_bench_bitcoin_CPPFLAGS = $(BITCOIN_INCLUDES) $(EVENT_CLFAGS) $(EVENT_PTHREADS_CFLAGS) -I$(builddir)/bench/
+bench_bench_bitcoin_LDADD = \
+ $(LIBBITCOIN_SERVER) \
+ $(LIBBITCOIN_COMMON) \
+ $(LIBBITCOIN_UNIVALUE) \
+ $(LIBBITCOIN_UTIL) \
+ $(LIBBITCOIN_CRYPTO) \
+ $(LIBLEVELDB) \
+ $(LIBMEMENV) \
+ $(LIBSECP256K1)
+
+if ENABLE_ZMQ
+bench_bench_bitcoin_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
+endif
+
+if ENABLE_WALLET
+bench_bench_bitcoin_LDADD += $(LIBBITCOIN_WALLET)
+endif
+
+bench_bench_bitcoin_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
+bench_bench_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
+
+
+CLEAN_BITCOIN_BENCH = bench/*.gcda bench/*.gcno
+
+CLEANFILES += $(CLEAN_BITCOIN_BENCH)
+
+bitcoin_bench: $(BENCH_BINARY)
+
+bench: $(BENCH_BINARY) FORCE
+ $(BENCH_BINARY)
+
+bitcoin_bench_clean : FORCE
+ rm -f $(CLEAN_BITCOIN_BENCH) $(bench_bench_bitcoin_OBJECTS) $(BENCH_BINARY)