go test -bench BenchmarkSparseAdvance -run -
(b *testing.B)
| 701 | |
| 702 | // go test -bench BenchmarkSparseAdvance -run - |
| 703 | func BenchmarkSparseAdvanceSequentially(b *testing.B) { |
| 704 | b.StopTimer() |
| 705 | |
| 706 | s := NewBitmap() |
| 707 | initsize := 65000 |
| 708 | |
| 709 | for i := 0; i < initsize; i++ { |
| 710 | s.Add(uint32(i)) |
| 711 | } |
| 712 | |
| 713 | for _, gap := range []int{1, 2, 65, 650} { |
| 714 | b.Run(fmt.Sprintf("advance from %d", gap), func(b *testing.B) { |
| 715 | b.ReportAllocs() |
| 716 | b.StartTimer() |
| 717 | |
| 718 | diff := uint32(0) |
| 719 | |
| 720 | for n := 0; n < b.N; n++ { |
| 721 | val := uint32((gap * n) % initsize) |
| 722 | |
| 723 | i := s.Iterator() |
| 724 | |
| 725 | for i.HasNext() && i.PeekNext() < val { |
| 726 | i.Next() |
| 727 | } |
| 728 | |
| 729 | diff += i.PeekNext() - val |
| 730 | } |
| 731 | |
| 732 | b.StopTimer() |
| 733 | |
| 734 | if diff != 0 { |
| 735 | b.Fatalf("Expected diff 0, got %d", diff) |
| 736 | } |
| 737 | }) |
| 738 | } |
| 739 | } |
| 740 | |
| 741 | // go test -bench BenchmarkIterate -run - |
| 742 | func BenchmarkIterateBitset(b *testing.B) { |