|
@ -0,0 +1,55 @@ |
|
|
|
|
|
package mempool |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
|
"encoding/binary" |
|
|
|
|
|
"testing" |
|
|
|
|
|
|
|
|
|
|
|
"github.com/tendermint/tendermint/abci/example/kvstore" |
|
|
|
|
|
"github.com/tendermint/tendermint/proxy" |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func BenchmarkReap(b *testing.B) { |
|
|
|
|
|
app := kvstore.NewKVStoreApplication() |
|
|
|
|
|
cc := proxy.NewLocalClientCreator(app) |
|
|
|
|
|
mempool := newMempoolWithApp(cc) |
|
|
|
|
|
|
|
|
|
|
|
size := 10000 |
|
|
|
|
|
for i := 0; i < size; i++ { |
|
|
|
|
|
tx := make([]byte, 8) |
|
|
|
|
|
binary.BigEndian.PutUint64(tx, uint64(i)) |
|
|
|
|
|
mempool.CheckTx(tx, nil) |
|
|
|
|
|
} |
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
|
mempool.ReapMaxBytesMaxGas(100000000, 10000000) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func BenchmarkCacheInsertTime(b *testing.B) { |
|
|
|
|
|
cache := newMapTxCache(b.N) |
|
|
|
|
|
txs := make([][]byte, b.N) |
|
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
|
txs[i] = make([]byte, 8) |
|
|
|
|
|
binary.BigEndian.PutUint64(txs[i], uint64(i)) |
|
|
|
|
|
} |
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
|
cache.Push(txs[i]) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// This benchmark is probably skewed, since we actually will be removing
|
|
|
|
|
|
// txs in parallel, which may cause some overhead due to mutex locking.
|
|
|
|
|
|
func BenchmarkCacheRemoveTime(b *testing.B) { |
|
|
|
|
|
cache := newMapTxCache(b.N) |
|
|
|
|
|
txs := make([][]byte, b.N) |
|
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
|
txs[i] = make([]byte, 8) |
|
|
|
|
|
binary.BigEndian.PutUint64(txs[i], uint64(i)) |
|
|
|
|
|
cache.Push(txs[i]) |
|
|
|
|
|
} |
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
|
cache.Remove(txs[i]) |
|
|
|
|
|
} |
|
|
|
|
|
} |