From dcc2556e08c55ff674306131fe3bc13591422214 Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Wed, 5 May 2021 21:29:11 +0300 Subject: [PATCH] fix: benchmark single operation in parallel benchmark not b.N (#6422) Co-authored-by: Sam Kleinman --- mempool/bench_test.go | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/mempool/bench_test.go b/mempool/bench_test.go index 5c75c6b1f..a6c07f98d 100644 --- a/mempool/bench_test.go +++ b/mempool/bench_test.go @@ -2,6 +2,7 @@ package mempool import ( "encoding/binary" + "sync/atomic" "testing" "github.com/tendermint/tendermint/abci/example/kvstore" @@ -54,25 +55,21 @@ func BenchmarkParallelCheckTx(b *testing.B) { mempool.config.Size = 100000000 - txCt := 500000000 - counter := make(chan int, txCt) - for i := 0; i < txCt; i++ { - counter <- i + var txcnt uint64 + next := func() uint64 { + return atomic.AddUint64(&txcnt, 1) - 1 } - 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) - } - } - }) - } + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + tx := make([]byte, 8) + binary.BigEndian.PutUint64(tx, next()) + if err := mempool.CheckTx(tx, nil, TxInfo{}); err != nil { + b.Fatal(err) + } + } + }) } func BenchmarkCheckDuplicateTx(b *testing.B) {