2018-03-17 11:53:21 +00:00
|
|
|
package storage
|
|
|
|
|
|
|
|
import (
|
2021-10-05 12:13:19 +00:00
|
|
|
"fmt"
|
2018-03-17 11:53:21 +00:00
|
|
|
"testing"
|
2021-10-05 12:13:19 +00:00
|
|
|
|
|
|
|
"github.com/nspcc-dev/neo-go/internal/random"
|
|
|
|
"github.com/stretchr/testify/require"
|
2018-03-17 11:53:21 +00:00
|
|
|
)
|
|
|
|
|
2021-10-05 12:13:19 +00:00
|
|
|
func newMemoryStoreForTesting(t testing.TB) Store {
|
2019-10-07 16:45:01 +00:00
|
|
|
return NewMemoryStore()
|
|
|
|
}
|
2021-10-05 12:13:19 +00:00
|
|
|
|
|
|
|
func BenchmarkMemorySeek(t *testing.B) {
|
|
|
|
for count := 10; count <= 10000; count *= 10 {
|
|
|
|
t.Run(fmt.Sprintf("%dElements", count), func(t *testing.B) {
|
|
|
|
ms := NewMemoryStore()
|
|
|
|
var (
|
|
|
|
searchPrefix = []byte{1}
|
|
|
|
badPrefix = []byte{2}
|
|
|
|
)
|
2022-02-16 13:48:47 +00:00
|
|
|
ts := NewMemCachedStore(ms)
|
2021-10-05 12:13:19 +00:00
|
|
|
for i := 0; i < count; i++ {
|
2022-02-16 14:48:15 +00:00
|
|
|
ts.Put(append(searchPrefix, random.Bytes(10)...), random.Bytes(10))
|
|
|
|
ts.Put(append(badPrefix, random.Bytes(10)...), random.Bytes(10))
|
2021-10-05 12:13:19 +00:00
|
|
|
}
|
2022-02-16 13:48:47 +00:00
|
|
|
_, err := ts.PersistSync()
|
|
|
|
require.NoError(t, err)
|
2021-10-05 12:13:19 +00:00
|
|
|
|
|
|
|
t.ReportAllocs()
|
|
|
|
t.ResetTimer()
|
|
|
|
for n := 0; n < t.N; n++ {
|
2022-01-17 17:41:51 +00:00
|
|
|
ms.Seek(SeekRange{Prefix: searchPrefix}, func(k, v []byte) bool { return false })
|
2021-10-05 12:13:19 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|