mempool: add duplicate transaction and parallel checktx benchmarks (#6419)

This commit is contained in:
Sam Kleinman
2021-05-04 17:20:24 -04:00
committed by GitHub
parent f366ae3c87
commit 09b2aa1bfa

View File

@@ -46,6 +46,56 @@ func BenchmarkCheckTx(b *testing.B) {
}
}
func BenchmarkParallelCheckTx(b *testing.B) {
app := kvstore.NewApplication()
cc := proxy.NewLocalClientCreator(app)
mempool, cleanup := newMempoolWithApp(cc)
defer cleanup()
mempool.config.Size = 100000000
txCt := 500000000
counter := make(chan int, txCt)
for i := 0; i < txCt; i++ {
counter <- i
}
close(counter)
b.ResetTimer()
for i := 0; i < b.N; i++ {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
tx := make([]byte, 8)
binary.BigEndian.PutUint64(tx, uint64(<-counter))
if err := mempool.CheckTx(tx, nil, TxInfo{}); err != nil {
b.Fatal(err)
}
}
})
}
}
func BenchmarkCheckDuplicateTx(b *testing.B) {
app := kvstore.NewApplication()
cc := proxy.NewLocalClientCreator(app)
mempool, cleanup := newMempoolWithApp(cc)
defer cleanup()
mempool.config.Size = 1000000
for i := 0; i < b.N; i++ {
tx := make([]byte, 8)
binary.BigEndian.PutUint64(tx, uint64(i))
if err := mempool.CheckTx(tx, nil, TxInfo{}); err != nil {
b.Fatal(err)
}
if err := mempool.CheckTx(tx, nil, TxInfo{}); err == nil {
b.Fatal("tx should be duplicate")
}
}
}
func BenchmarkCacheInsertTime(b *testing.B) {
cache := newMapTxCache(b.N)
txs := make([][]byte, b.N)