From 09b2aa1bfa969867eea39ba62630e517192a0ab7 Mon Sep 17 00:00:00 2001 From: Sam Kleinman Date: Tue, 4 May 2021 17:20:24 -0400 Subject: [PATCH] mempool: add duplicate transaction and parallel checktx benchmarks (#6419) --- mempool/bench_test.go | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/mempool/bench_test.go b/mempool/bench_test.go index 946d8016c..5c75c6b1f 100644 --- a/mempool/bench_test.go +++ b/mempool/bench_test.go @@ -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)