From bf8def9749eaa444c99a7d72ca712bdc0367a4e5 Mon Sep 17 00:00:00 2001 From: Taylor Hornby Date: Mon, 11 Apr 2016 08:05:13 -0600 Subject: [PATCH] Add equihash solving benchmarks --- qa/zcash/all-performance-measurements.sh | 20 +++++++++++++++++--- src/wallet/rpcwallet.cpp | 6 +++--- src/zcbenchmarks.cpp | 14 ++++++++++++++ src/zcbenchmarks.h | 1 + 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/qa/zcash/all-performance-measurements.sh b/qa/zcash/all-performance-measurements.sh index 4d45a4ad..a3403235 100755 --- a/qa/zcash/all-performance-measurements.sh +++ b/qa/zcash/all-performance-measurements.sh @@ -3,12 +3,12 @@ set -e function zcash_rpc { - ./src/zcash-cli -rpcwait -rpcuser=user -rpcpassword=password -rpcport=5001 "$@" + ./src/zcash-cli -rpcwait -rpcuser=user -rpcpassword=password -rpcport=5983 "$@" } function zcashd_start { - ./src/zcashd -regtest -rpcuser=user -rpcpassword=password -rpcport=5001 & + ./src/zcashd -regtest -rpcuser=user -rpcpassword=password -rpcport=5983 & ZCASHD_PID=$! } @@ -19,7 +19,7 @@ function zcashd_stop { function zcashd_massif_start { rm -f massif.out - valgrind --tool=massif --time-unit=ms --massif-out-file=massif.out ./src/zcashd -regtest -rpcuser=user -rpcpassword=password -rpcport=5001 & + valgrind --tool=massif --time-unit=ms --massif-out-file=massif.out ./src/zcashd -regtest -rpcuser=user -rpcpassword=password -rpcport=5983 & ZCASHD_PID=$! } @@ -54,6 +54,13 @@ zcashd_start zcash_rpc zcbenchmark createjoinsplit 10 zcashd_stop +echo "" +echo "Solve Equihash" +echo "------------------" +zcashd_start +zcash_rpc zcbenchmark solveequihash 10 +zcashd_stop + echo "" echo "" echo "Memory" @@ -79,3 +86,10 @@ echo "------------------" zcashd_massif_start zcash_rpc zcbenchmark createjoinsplit 1 zcashd_massif_stop + +echo "" +echo "Solve Equihash" +echo "------------------" +zcashd_massif_start +zcash_rpc zcbenchmark solveequihash 10 +zcashd_massif_stop diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 362ddbe2..0283fc0c 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2397,9 +2397,9 @@ Value zc_benchmark(const json_spirit::Array& params, bool fHelp) sample_times.push_back(benchmark_create_joinsplit()); } else if (benchmarktype == "verifyjoinsplit") { throw JSONRPCError(RPC_TYPE_ERROR, "Unimplemented"); - } else if (benchmarktype == "equihashsolve") { - throw JSONRPCError(RPC_TYPE_ERROR, "Unimplemented"); - } else if (benchmarktype == "equihashverify") { + } else if (benchmarktype == "solveequihash") { + sample_times.push_back(benchmark_solve_equihash()); + } else if (benchmarktype == "verifyequihash") { throw JSONRPCError(RPC_TYPE_ERROR, "Unimplemented"); } else { throw JSONRPCError(RPC_TYPE_ERROR, "Invalid benchmarktype"); diff --git a/src/zcbenchmarks.cpp b/src/zcbenchmarks.cpp index f083c01c..102b0d86 100644 --- a/src/zcbenchmarks.cpp +++ b/src/zcbenchmarks.cpp @@ -5,6 +5,8 @@ #include "util.h" #include "init.h" #include "primitives/transaction.h" +#include "crypto/equihash.h" +#include "chainparams.h" #include "zcbenchmarks.h" @@ -88,3 +90,15 @@ double benchmark_create_joinsplit() assert(pourtx.Verify(*pzerocashParams)); return ret; } + +double benchmark_solve_equihash() +{ + const char *testing = "testing"; + Equihash eh {Params(CBaseChainParams::MAIN).EquihashN(), Params(CBaseChainParams::MAIN).EquihashK()}; + crypto_generichash_blake2b_state eh_state; + eh.InitialiseState(eh_state); + crypto_generichash_blake2b_update(&eh_state, (const unsigned char*)testing, strlen(testing)); + timer_start(); + eh.BasicSolve(eh_state); + return timer_stop(); +} diff --git a/src/zcbenchmarks.h b/src/zcbenchmarks.h index 310ac604..55ee1686 100644 --- a/src/zcbenchmarks.h +++ b/src/zcbenchmarks.h @@ -7,5 +7,6 @@ extern double benchmark_sleep(); extern double benchmark_parameter_loading(); extern double benchmark_create_joinsplit(); +extern double benchmark_solve_equihash(); #endif