Browse Source

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

pull/6421/head
Sam Kleinman 4 years ago
committed by GitHub
parent
commit
09b2aa1bfa
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 50 additions and 0 deletions
  1. +50
    -0
      mempool/bench_test.go

+ 50
- 0
mempool/bench_test.go 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) { func BenchmarkCacheInsertTime(b *testing.B) {
cache := newMapTxCache(b.N) cache := newMapTxCache(b.N)
txs := make([][]byte, b.N) txs := make([][]byte, b.N)


Loading…
Cancel
Save