package pmap import ( "fmt" "testing" ) func TestInplace(t *testing.T) { p := New(hash).(InplaceMap) const numElems = 100 for i := range iter(numElems) { p = p.SetInplace(i, i) } if p.Len() != numElems { t.Fatalf("Len() = %v, want %v", p.Len(), numElems) } for i := range iter(numElems) { v, ok := p.Get(i) if v != i || !ok { t.Errorf("Get(%d) = %v %v, want %v %v", i, v, ok, i, true) } } fmt.Print(p.(pmap).stats()) } func BenchmarkSetInplace(b *testing.B) { b.Run("size=10", func(b *testing.B) { benchmarkSetInplace(b, 10) }) b.Run("size=100", func(b *testing.B) { benchmarkSetInplace(b, 100) }) b.Run("size=1000", func(b *testing.B) { benchmarkSetInplace(b, 1000) }) b.Run("size=10000", func(b *testing.B) { benchmarkSetInplace(b, 10000) }) if !testing.Short() { b.Run("size=100000", func(b *testing.B) { benchmarkSetInplace(b, 100000) }) } } func benchmarkSetInplace(b *testing.B, numElems int) { p := New(hash).(InplaceMap) for i := range iter(numElems) { p = p.SetInplace(i, i) } if p.Len() != numElems { b.Fatalf("Len() = %v, want %v", p.Len(), numElems) } b.ResetTimer() for i := range iter(b.N) { k := numElems p = p.SetInplace(k, i) } }