From: Keith Randall Date: Thu, 11 Sep 2014 05:54:07 +0000 (-0700) Subject: runtime: add timing test for iterate/delete map idiom. X-Git-Tag: go1.4beta1~446 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=689dc60c14cd63cb258c050542bcfc0cbc05e914;p=gostls13.git runtime: add timing test for iterate/delete map idiom. LGTM=bradfitz, iant R=iant, bradfitz CC=golang-codereviews https://golang.org/cl/140510043 --- diff --git a/test/maplinear.go b/test/maplinear.go index 56e50951af..8cc198b8fe 100644 --- a/test/maplinear.go +++ b/test/maplinear.go @@ -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 + } + } + }) }