TL;DR
We're testing RocksDB by deploying a tiny testnet with tintoy
, and measuring the amount of time it takes to deploy.
If you attempt to recreate my results, make sure that you do the run a few times. The first run will typically be slower than subsequent runs if docker has to download images it doesn't already have.
What are we testing?
Here are the plugins I have enabled:
plugin = chain p2p webserver debug_node database_api network_broadcast_api debug_node_api block_api json_rpc account_by_key tags follow market_history account_history
plugin = database_api account_by_key_api network_broadcast_api tags_api follow_api market_history_api condenser_api account_history_api
The Test
In both branches, I run the docker image until I see the following, then I kill the container:
[√] testnet: true
[√] head block time: within 3 seconds
[√] scheduled witnesses: 21
[√] majority version: 0.21.0
The above text is generated by tinman during the bootstrap process of tintoy. It means that the docker container is fully bootstrapped and ready to start responding to requests.
Baseline Numbers
This test uses the docker image: FROM steemit/steem:stable
$ time docker run inertia/tintoy:stable
real 3m6.436s
user 0m0.110s
sys 0m0.253s
Mira Numbers
This test uses the docker image: FROM steemit/steem:mira
$ time docker run inertia/tintoy:mira
real 3m56.188s
user 0m0.110s
sys 0m0.189s
Conclusion
Did we just lose performance? Maybe for this particular contrived test, yes. All we're doing here is creating a bootstrap blockchain with about 2000 accounts, then copying it over a local p2p socket to a second blockchain. It doesn't even use more than 130 blocks to do this.
It's something to keep an eye on.
I'm just happy to see the mira branch work in tintoy without having to modify anything. This alone is progress.