runtime: add timing test for iterate/delete map idiom.

LGTM=bradfitz, iant
R=iant, bradfitz
CC=golang-codereviews
https://golang.org/cl/140510043
This commit is contained in:
Keith Randall 2014-09-10 22:54:07 -07:00
parent b78d7b75c7
commit 689dc60c14
1 changed files with 18 additions and 0 deletions

View File

@ -140,4 +140,22 @@ func main() {
m[complex(float64(i), float64(i))] = 1
}
})
// ~70ms on a 1.6GHz Zeon.
// The iterate/delete idiom currently takes expected
// O(n lg n) time. Fortunately, the checkLinear test
// leaves enough wiggle room to include n lg n time
// (it actually tests for O(n^log_2(3)).
checkLinear("iterdelete", 10000, func(n int) {
m := map[int]int{}
for i := 0; i < n; i++ {
m[i] = i
}
for i := 0; i < n; i++ {
for k := range m {
delete(m, k)
break
}
}
})
}