There are a lot of open PRs right now which will give significant performance improvements. Below are some summary benchmarks on all of these PRs. In each row, the relevant PR has been added to all the previous PR's, so the last row is the cumulative effect of all of them. Please see notes below.
| PR | ConnectBlock time (ms) | Reduction in time from this PR | CreateNewBlock time (ms) |
|---|---|---|---|
| baseline | 500 - 1500 | ||
| #6954(secp256k1) | 400 - 600 | 15%-65% | |
| #6931(skip BIP30) #6932(modifyNewCoins) | 200 - 350 | 30%-40% | 3000 - 3500 |
| #6357(dynamic Priority) #6898(CreateNewBlock) | 200 - 350 | very small increase | 180 - 230 |
| #6936(warm cache) | 150 - 200 | 10%-30% | 130 - 170 |
| #6918(faster sigcache) #6914(prevector) | 130 - 150 | 20%-30% | 100 - 120 |
These numbers should be taken to be rough estimates. They were collected from a series of different tests. I reran different binaries over a historical simulation of all the p2p traffic for the month of October. I also ran live binaries running the various PRs for the first 8 days of November. I ran versions both with and without periodically calling CreateNewBlock to time it. All of these PR's interact with each other significantly. So running them in different combinations or with different arguments may lead to significantly different results. I used the following settings:
- maxmempool=300
- dbcache=1000
- minrelaytxfee=0.0001
- maxsigcachesize=1000000 (or 80 for binaries including #6918)