m.deleteSmall(typ, hash, key)
} else {
idx := m.directoryIndex(hash)
- m.directoryAt(idx).Delete(typ, m, key)
+ m.directoryAt(idx).Delete(typ, m, hash, key)
}
if m.used == 0 {
}
}
-func (t *table) Delete(typ *abi.SwissMapType, m *Map, key unsafe.Pointer) {
- hash := typ.Hasher(key, m.seed)
-
+func (t *table) Delete(typ *abi.SwissMapType, m *Map, hash uintptr, key unsafe.Pointer) {
seq := makeProbeSeq(h1(hash), t.groups.lengthMask)
for ; ; seq = seq.next() {
g := t.groups.group(typ, seq.offset)
b.Run("Key=*int32/Elem=int32", benchSizes(benchmarkMapPop[*int32, int32]))
b.Run("Key=int32/Elem=*int32", benchSizes(benchmarkMapPop[int32, *int32]))
}
+
+func BenchmarkMapDeleteLargeKey(b *testing.B) {
+ m := map[string]int{}
+ for i := range 9 {
+ m[fmt.Sprintf("%d", i)] = i
+ }
+ key := strings.Repeat("*", 10000)
+ for range b.N {
+ delete(m, key)
+ }
+}