From 99dd50c30c7596f60afe1773a90d3ecda47b766b Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 4 Oct 2017 12:48:50 +0100 Subject: [PATCH] Add benchmark for listunspent Closes #2645. --- qa/zcash/performance-measurements.sh | 10 ++++++++-- src/wallet/rpcwallet.cpp | 2 ++ src/zcbenchmarks.cpp | 9 +++++++++ src/zcbenchmarks.h | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/qa/zcash/performance-measurements.sh b/qa/zcash/performance-measurements.sh index 60f92dd1d..ac6d06e86 100755 --- a/qa/zcash/performance-measurements.sh +++ b/qa/zcash/performance-measurements.sh @@ -56,7 +56,7 @@ function use_200k_benchmark { function zcashd_start { case "$1" in - sendtoaddress|loadwallet) + sendtoaddress|loadwallet|listunspent) case "$2" in 200k-recv) use_200k_benchmark 0 @@ -86,7 +86,7 @@ function zcashd_stop { function zcashd_massif_start { case "$1" in - sendtoaddress|loadwallet) + sendtoaddress|loadwallet|listunspent) case "$2" in 200k-recv) use_200k_benchmark 0 @@ -206,6 +206,9 @@ case "$1" in loadwallet) zcash_rpc zcbenchmark loadwallet 10 ;; + listunspent) + zcash_rpc zcbenchmark listunspent 10 + ;; *) zcashd_stop echo "Bad arguments to time." @@ -250,6 +253,9 @@ case "$1" in loadwallet) # The initial load is sufficient for measurement ;; + listunspent) + zcash_rpc zcbenchmark listunspent 1 + ;; *) zcashd_massif_stop echo "Bad arguments to memory." diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 55669f74f..332f96b21 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2609,6 +2609,8 @@ UniValue zc_benchmark(const UniValue& params, bool fHelp) throw JSONRPCError(RPC_TYPE_ERROR, "Benchmark must be run in regtest mode"); } sample_times.push_back(benchmark_loadwallet()); + } else if (benchmarktype == "listunspent") { + sample_times.push_back(benchmark_listunspent()); } else { throw JSONRPCError(RPC_TYPE_ERROR, "Invalid benchmarktype"); } diff --git a/src/zcbenchmarks.cpp b/src/zcbenchmarks.cpp index 5c20a67e3..1cb880ea1 100644 --- a/src/zcbenchmarks.cpp +++ b/src/zcbenchmarks.cpp @@ -465,3 +465,12 @@ double benchmark_loadwallet() post_wallet_load(); return res; } + +double benchmark_listunspent() +{ + UniValue params(UniValue::VARR); + struct timeval tv_start; + timer_start(tv_start); + auto unspent = listunspent(params, false); + return timer_stop(tv_start); +} diff --git a/src/zcbenchmarks.h b/src/zcbenchmarks.h index a2672daa0..ac87d0326 100644 --- a/src/zcbenchmarks.h +++ b/src/zcbenchmarks.h @@ -18,5 +18,6 @@ extern double benchmark_increment_note_witnesses(size_t nTxs); extern double benchmark_connectblock_slow(); extern double benchmark_sendtoaddress(CAmount amount); extern double benchmark_loadwallet(); +extern double benchmark_listunspent(); #endif