Since the parameters changed in z8, the benchmark on speed.z.cash is showing misleading results due to variability. (The quartile and extrema bars will still show the variability with 50 runs, they just won't jump around as much between benchmark data points.)
182 lines
4.8 KiB
Bash
Executable File
182 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
DATADIR=./benchmark-datadir
|
|
|
|
function zcash_rpc {
|
|
./src/zcash-cli -rpcwait -rpcuser=user -rpcpassword=password -rpcport=5983 "$@"
|
|
}
|
|
|
|
function zcashd_generate {
|
|
zcash_rpc generate 101 > /dev/null
|
|
}
|
|
|
|
function zcashd_start {
|
|
rm -rf "$DATADIR"
|
|
mkdir -p "$DATADIR"
|
|
./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 &
|
|
ZCASHD_PID=$!
|
|
}
|
|
|
|
function zcashd_stop {
|
|
zcash_rpc stop > /dev/null
|
|
wait $ZCASH_PID
|
|
}
|
|
|
|
function zcashd_massif_start {
|
|
rm -rf "$DATADIR"
|
|
mkdir -p "$DATADIR"
|
|
rm -f massif.out
|
|
valgrind --tool=massif --time-unit=ms --massif-out-file=massif.out ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 &
|
|
ZCASHD_PID=$!
|
|
}
|
|
|
|
function zcashd_massif_stop {
|
|
zcash_rpc stop > /dev/null
|
|
wait $ZCASHD_PID
|
|
ms_print massif.out
|
|
}
|
|
|
|
function zcashd_valgrind_start {
|
|
rm -rf "$DATADIR"
|
|
mkdir -p "$DATADIR"
|
|
rm -f valgrind.out
|
|
valgrind --leak-check=yes -v --error-limit=no --log-file="valgrind.out" ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 &
|
|
ZCASHD_PID=$!
|
|
}
|
|
|
|
function zcashd_valgrind_stop {
|
|
zcash_rpc stop > /dev/null
|
|
wait $ZCASHD_PID
|
|
cat valgrind.out
|
|
}
|
|
|
|
# Precomputation
|
|
case "$1" in
|
|
*)
|
|
case "$2" in
|
|
verifyjoinsplit)
|
|
zcashd_start
|
|
RAWJOINSPLIT=$(zcash_rpc zcsamplejoinsplit)
|
|
zcashd_stop
|
|
esac
|
|
esac
|
|
|
|
case "$1" in
|
|
time)
|
|
zcashd_start
|
|
case "$2" in
|
|
sleep)
|
|
zcash_rpc zcbenchmark sleep 10
|
|
;;
|
|
parameterloading)
|
|
zcash_rpc zcbenchmark parameterloading 10
|
|
;;
|
|
createjoinsplit)
|
|
zcash_rpc zcbenchmark createjoinsplit 10
|
|
;;
|
|
verifyjoinsplit)
|
|
zcash_rpc zcbenchmark verifyjoinsplit 1000 "\"$RAWJOINSPLIT\""
|
|
;;
|
|
solveequihash)
|
|
zcash_rpc zcbenchmark solveequihash 50 "${@:3}"
|
|
;;
|
|
verifyequihash)
|
|
zcash_rpc zcbenchmark verifyequihash 1000
|
|
;;
|
|
validatelargetx)
|
|
zcash_rpc zcbenchmark validatelargetx 5
|
|
;;
|
|
*)
|
|
zcashd_stop
|
|
echo "Bad arguments."
|
|
exit 1
|
|
esac
|
|
zcashd_stop
|
|
;;
|
|
memory)
|
|
zcashd_massif_start
|
|
case "$2" in
|
|
sleep)
|
|
zcash_rpc zcbenchmark sleep 1
|
|
;;
|
|
parameterloading)
|
|
zcash_rpc zcbenchmark parameterloading 1
|
|
;;
|
|
createjoinsplit)
|
|
zcash_rpc zcbenchmark createjoinsplit 1
|
|
;;
|
|
verifyjoinsplit)
|
|
zcash_rpc zcbenchmark verifyjoinsplit 1 "\"$RAWJOINSPLIT\""
|
|
;;
|
|
solveequihash)
|
|
zcash_rpc zcbenchmark solveequihash 1 "${@:3}"
|
|
;;
|
|
verifyequihash)
|
|
zcash_rpc zcbenchmark verifyequihash 1
|
|
;;
|
|
*)
|
|
zcashd_massif_stop
|
|
echo "Bad arguments."
|
|
exit 1
|
|
esac
|
|
zcashd_massif_stop
|
|
rm -f massif.out
|
|
;;
|
|
valgrind)
|
|
zcashd_valgrind_start
|
|
case "$2" in
|
|
sleep)
|
|
zcash_rpc zcbenchmark sleep 1
|
|
;;
|
|
parameterloading)
|
|
zcash_rpc zcbenchmark parameterloading 1
|
|
;;
|
|
createjoinsplit)
|
|
zcash_rpc zcbenchmark createjoinsplit 1
|
|
;;
|
|
verifyjoinsplit)
|
|
zcash_rpc zcbenchmark verifyjoinsplit 1 "\"$RAWJOINSPLIT\""
|
|
;;
|
|
solveequihash)
|
|
zcash_rpc zcbenchmark solveequihash 1 "${@:3}"
|
|
;;
|
|
verifyequihash)
|
|
zcash_rpc zcbenchmark verifyequihash 1
|
|
;;
|
|
*)
|
|
zcashd_valgrind_stop
|
|
echo "Bad arguments."
|
|
exit 1
|
|
esac
|
|
zcashd_valgrind_stop
|
|
rm -f valgrind.out
|
|
;;
|
|
valgrind-tests)
|
|
case "$2" in
|
|
gtest)
|
|
rm -f valgrind.out
|
|
valgrind --leak-check=yes -v --error-limit=no --log-file="valgrind.out" ./src/zcash-gtest
|
|
cat valgrind.out
|
|
rm -f valgrind.out
|
|
;;
|
|
test_bitcoin)
|
|
rm -f valgrind.out
|
|
valgrind --leak-check=yes -v --error-limit=no --log-file="valgrind.out" ./src/test/test_bitcoin
|
|
cat valgrind.out
|
|
rm -f valgrind.out
|
|
;;
|
|
*)
|
|
echo "Bad arguments."
|
|
exit 1
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Bad arguments."
|
|
exit 1
|
|
esac
|
|
|
|
# Cleanup
|
|
rm -rf "$DATADIR"
|