|
|
@ -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) |
|
|
|