]> Cypherpunks repositories - gostls13.git/commitdiff
testing: quantize AllocsPerRun
authorRob Pike <r@golang.org>
Thu, 30 May 2013 15:28:08 +0000 (11:28 -0400)
committerRob Pike <r@golang.org>
Thu, 30 May 2013 15:28:08 +0000 (11:28 -0400)
As the code now says:

We are forced to return a float64 because the API is silly, but do
the division as integers so we can ask if AllocsPerRun()==1
instead of AllocsPerRun()<2.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/9837049

src/pkg/testing/allocs.go

index d142a330b080253e61753cc062acff98d0ded6a4..9ec47bd4602ec8a54b9a495649bfc035d44bd449 100644 (file)
@@ -9,6 +9,7 @@ import (
 )
 
 // AllocsPerRun returns the average number of allocations during calls to f.
+// Although the return value has type float64, it will always be an integral value.
 //
 // To compute the number of allocations, the function will first be run once as
 // a warm-up.  The average number of allocations over the specified number of
@@ -36,6 +37,9 @@ func AllocsPerRun(runs int, f func()) (avg float64) {
        runtime.ReadMemStats(&memstats)
        mallocs += memstats.Mallocs
 
-       // Average the mallocs over the runs (not counting the warm-up)
-       return float64(mallocs) / float64(runs)
+       // Average the mallocs over the runs (not counting the warm-up).
+       // We are forced to return a float64 because the API is silly, but do
+       // the division as integers so we can ask if AllocsPerRun()==1
+       // instead of AllocsPerRun()<2.
+       return float64(mallocs / uint64(runs))
 }