diff --git a/chunker/rabin_test.go b/chunker/rabin_test.go index f267db41a..140c0c4fa 100644 --- a/chunker/rabin_test.go +++ b/chunker/rabin_test.go @@ -79,3 +79,32 @@ func TestRabinChunkReuse(t *testing.T) { t.Log("too many spare chunks made") } } + +var Res uint64 + +func BenchmarkRabin(b *testing.B) { + data := make([]byte, 16<<20) + util.NewTimeSeededRand().Read(data) + + b.SetBytes(16 << 20) + b.ReportAllocs() + b.ResetTimer() + + var res uint64 + + for i := 0; i < b.N; i++ { + r := NewRabin(bytes.NewReader(data), 1024*256) + + for { + chunk, err := r.NextBytes() + if err != nil { + if err == io.EOF { + break + } + b.Fatal(err) + } + res = res + uint64(len(chunk)) + } + } + Res = Res + res +} diff --git a/chunker/splitting_test.go b/chunker/splitting_test.go index 3153427ed..27afe5967 100644 --- a/chunker/splitting_test.go +++ b/chunker/splitting_test.go @@ -6,6 +6,8 @@ import ( "testing" u "github.com/ipfs/go-ipfs-util" + util "github.com/ipfs/go-ipfs-util" + pool "github.com/libp2p/go-buffer-pool" ) func randBuf(t *testing.T, size int) []byte { @@ -118,3 +120,31 @@ func (s *clipReader) Read(buf []byte) (int, error) { return s.r.Read(buf) } + +func BenchmarkDefault(b *testing.B) { + data := make([]byte, 16<<20) + util.NewTimeSeededRand().Read(data) + + b.SetBytes(16 << 20) + b.ReportAllocs() + b.ResetTimer() + + var res uint64 + + for i := 0; i < b.N; i++ { + r := DefaultSplitter(bytes.NewReader(data)) + + for { + chunk, err := r.NextBytes() + if err != nil { + if err == io.EOF { + break + } + b.Fatal(err) + } + res = res + uint64(len(chunk)) + pool.Put(chunk) + } + } + Res = Res + res +}