Closed kostyantyn closed 5 years ago
By invoking generatetoaddress/getnewaddress once per batch the execution time is reduced by 2.5 times.
generatetoaddress
getnewaddress
On my MacBook 2.8 GHz Intel Core i7 I see the following gain.
Before:
/usr/local/bin/python3.7 /Users/kostiantyn/github.com/kostyantyn/unit-e/test/functional/feature_commits_forkchoice.py 2019-04-29 16:23:33.309000 TestFramework (INFO): Initializing test directory /var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa 2019-04-29 16:23:33.310000 TestFramework (INFO): Debug file at /var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa/node0/regtest/debug.log Starting node 0 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 1 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 2 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 3 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} -validating=1 2019-04-29 16:23:33.312000 TestFramework.node0 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa/node0 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode0 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:23:33.317000 TestFramework.node1 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa/node1 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode1 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:23:33.321000 TestFramework.node2 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa/node2 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode2 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:23:33.324000 TestFramework.node3 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testipslakwa/node3 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode3 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} -validating=1 2019-04-29 16:23:36.217000 TestFramework (INFO): Setup deposit 2019-04-29 16:23:42.901000 TestFramework (INFO): Setup test prerequisites 2019-04-29 16:23:55.654000 TestFramework (INFO): Test fresh node sync 2019-04-29 16:23:56.911000 TestFramework (INFO): Test longest node reverts to justified 2019-04-29 16:23:58.013000 TestFramework (INFO): Test all nodes continue to work as usual 2019-04-29 16:24:16.444000 TestFramework (INFO): Test nodes sync after reconnection 2019-04-29 16:24:30.597000 TestFramework (INFO): Stopping nodes 2019-04-29 16:24:31.666000 TestFramework (INFO): Cleaning up 2019-04-29 16:24:31.709000 TestFramework (INFO): Tests successful
After:
/usr/local/bin/python3.7 /Users/kostiantyn/github.com/kostyantyn/unit-e/test/functional/feature_commits_forkchoice.py 2019-04-29 16:27:12.668000 TestFramework (INFO): Initializing test directory /var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc 2019-04-29 16:27:12.668000 TestFramework (INFO): Debug file at /var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc/node0/regtest/debug.log Starting node 0 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 1 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 2 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} Starting node 3 with args: -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} -validating=1 2019-04-29 16:27:12.671000 TestFramework.node0 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc/node0 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode0 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:27:12.679000 TestFramework.node1 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc/node1 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode1 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:27:12.682000 TestFramework.node2 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc/node2 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode2 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} 2019-04-29 16:27:12.684000 TestFramework.node3 (INFO): Running command: unit-e -datadir=/var/folders/r9/s635cnq5265dp3bgh1kcw7b40000gn/T/testvdc8vqvc/node3 -server -keypool=1 -discover=0 -rest -logtimemicros -debug -debugexclude=libevent -debugexclude=leveldb -mocktime=0 -uacomment=testnode3 -esperanzaconfig={"epochLength": 10, "minDepositSize": 1500} -validating=1 2019-04-29 16:27:15.632000 TestFramework (INFO): Setup deposit 2019-04-29 16:27:17.817000 TestFramework (INFO): Setup test prerequisites 2019-04-29 16:27:21.430000 TestFramework (INFO): Test fresh node sync 2019-04-29 16:27:22.641000 TestFramework (INFO): Test longest node reverts to justified 2019-04-29 16:27:23.755000 TestFramework (INFO): Test all nodes continue to work as usual 2019-04-29 16:27:29.628000 TestFramework (INFO): Test nodes sync after reconnection 2019-04-29 16:27:34.418000 TestFramework (INFO): Stopping nodes 2019-04-29 16:27:35.433000 TestFramework (INFO): Cleaning up 2019-04-29 16:27:35.462000 TestFramework (INFO): Tests successful
We can also make an improvement by changing the epochLength from 10 to 5 but this will require to change all the asserts.
epochLength
Signed-off-by: Kostiantyn Stepaniuk kostia@thirdhash.com
By invoking
generatetoaddress
/getnewaddress
once per batch the execution time is reduced by 2.5 times.On my MacBook 2.8 GHz Intel Core i7 I see the following gain.
Before:
After:
We can also make an improvement by changing the
epochLength
from 10 to 5 but this will require to change all the asserts.Signed-off-by: Kostiantyn Stepaniuk kostia@thirdhash.com