add benchmark
Jeromy committed
Mar 9, 2015 at 16:37 UTC
58d5c852fd23be6be3eebee132737573d88516a5
1 file changed
+31
-2
unixfs/mod/dagmodifier_test.go
+31
-2
@@ -23,7 +23,7 @@ import (
23
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
24
)
25
26
-func getMockDagServ(t *testing.T) mdag.DAGService {
26
+func getMockDagServ(t testing.TB) mdag.DAGService {
27
dstore := ds.NewMapDatastore()
28
tsds := sync.MutexWrap(dstore)
29
bstore := blockstore.NewBlockstore(tsds)
@@ -34,7 +34,7 @@ func getMockDagServ(t *testing.T) mdag.DAGService {
34
return mdag.NewDAGService(bserv)
35
}
36
37
-func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) {
37
+func getNode(t testing.TB, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) {
38
in := io.LimitReader(u.NewTimeSeededRand(), size)
39
node, err := imp.BuildTrickleDagFromReader(in, dserv, nil, &chunk.SizeSplitter{500})
40
if err != nil {
@@ -423,6 +423,35 @@ func TestDagTruncate(t *testing.T) {
423
}
424
}
425
426
+func BenchmarkDagmodWrite(b *testing.B) {
427
+ b.StopTimer()
428
+ dserv := getMockDagServ(b)
429
+ _, n := getNode(b, dserv, 0)
430
+ ctx, cancel := context.WithCancel(context.Background())
431
+ defer cancel()
432
+
433
+ wrsize := 4096
434
+
435
+ dagmod, err := NewDagModifier(ctx, n, dserv, nil, &chunk.SizeSplitter{Size: 512})
436
+ if err != nil {
437
+ b.Fatal(err)
438
+ }
439
+
440
+ buf := make([]byte, b.N*wrsize)
441
+ u.NewTimeSeededRand().Read(buf)
442
+ b.StartTimer()
443
+ b.SetBytes(int64(wrsize))
444
+ for i := 0; i < b.N; i++ {
445
+ n, err := dagmod.Write(buf[i*wrsize : (i+1)*wrsize])
446
+ if err != nil {
447
+ b.Fatal(err)
448
+ }
449
+ if n != wrsize {
450
+ b.Fatal("Wrote bad size")
451
+ }
452
+ }
453
+}
454
+
455
func arrComp(a, b []byte) error {
456
if len(a) != len(b) {
457
return fmt.Errorf("Arrays differ in length. %d != %d", len(a), len(b))