@cryptotaxi247 / kubo / commits / 1907e66eb

add benchmark for hamt walking

License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>

Steven Allen committed Mar 28, 2018 at 17:53 UTC 1907e66eb802f47147f5b78460d9720fa0d985f4
1 file changed +43
unixfs/hamt/hamt_test.go
+43
@@ -523,6 +523,49 @@ func printDiff(ds ipld.DAGService, a, b *dag.ProtoNode) {
523 }
524 }
525
526 +func BenchmarkHAMTWalk(b *testing.B) {
527 + ctx := context.Background()
528 +
529 + ds := mdtest.Mock()
530 + sh, _ := NewShard(ds, 256)
531 + nd, err := sh.Node()
532 + if err != nil {
533 + b.Fatal(err)
534 + }
535 +
536 + err = ds.Add(ctx, nd)
537 + if err != nil {
538 + b.Fatal(err)
539 + }
540 + ds.Add(ctx, ft.EmptyDirNode())
541 +
542 + s, err := NewHamtFromDag(ds, nd)
543 + if err != nil {
544 + b.Fatal(err)
545 + }
546 +
547 + for j := 0; j < 1000; j++ {
548 + err = s.Set(ctx, fmt.Sprintf("%d", j), ft.EmptyDirNode())
549 + if err != nil {
550 + b.Fatal(err)
551 + }
552 + }
553 +
554 + for i := 0; i < b.N; i++ {
555 + cnt := 0
556 + err = s.ForEachLink(ctx, func(l *ipld.Link) error {
557 + cnt++
558 + return nil
559 + })
560 + if err != nil {
561 + b.Fatal(err)
562 + }
563 + if cnt < 1000 {
564 + b.Fatal("expected 100 children")
565 + }
566 + }
567 +}
568 +
569 func BenchmarkHAMTSet(b *testing.B) {
570 ctx := context.Background()
571