]> Cypherpunks repositories - gostls13.git/commitdiff
math: fix Abs, Copysign and Signbit benchmarks
authorMichael Munday <mike.munday@ibm.com>
Fri, 8 Sep 2017 23:22:29 +0000 (00:22 +0100)
committerMichael Munday <mike.munday@ibm.com>
Sat, 9 Sep 2017 16:52:16 +0000 (16:52 +0000)
CL 62250 makes constant folding a bit more aggressive and these
benchmarks were optimized away. This CL adds some indirection to
the function arguments to stop them being folded.

The Copysign benchmark is a bit faster because I've left one
argument as a constant and it can be partially folded.

                     old           CL 62250     this CL
Copysign             1.24ns ± 0%   0.34ns ± 2%  1.02ns ± 2%
Abs                  0.67ns ± 0%   0.35ns ± 3%  0.67ns ± 0%
Signbit              0.87ns ± 0%   0.35ns ± 2%  0.87ns ± 1%

Change-Id: I9604465a87d7aa29f4bd6009839c8ee354be3cd7
Reviewed-on: https://go-review.googlesource.com/62450
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/math/all_test.go

index 7409d8b141a71f2483528a2c7232d78e352c1445..d0630aef4464750da14feffa5c4f1459869354e3 100644 (file)
@@ -3068,10 +3068,12 @@ func BenchmarkCeil(b *testing.B) {
        GlobalF = x
 }
 
+var copysignNeg = -1.0
+
 func BenchmarkCopysign(b *testing.B) {
        x := 0.0
        for i := 0; i < b.N; i++ {
-               x = Copysign(.5, -1)
+               x = Copysign(.5, copysignNeg)
        }
        GlobalF = x
 }
@@ -3164,10 +3166,12 @@ func BenchmarkExp2Go(b *testing.B) {
        GlobalF = x
 }
 
+var absPos = .5
+
 func BenchmarkAbs(b *testing.B) {
        x := 0.0
        for i := 0; i < b.N; i++ {
-               x = Abs(.5)
+               x = Abs(absPos)
        }
        GlobalF = x
 
@@ -3417,10 +3421,12 @@ func BenchmarkRemainder(b *testing.B) {
        GlobalF = x
 }
 
+var signbitPos = 2.5
+
 func BenchmarkSignbit(b *testing.B) {
        x := false
        for i := 0; i < b.N; i++ {
-               x = Signbit(2.5)
+               x = Signbit(signbitPos)
        }
        GlobalB = x
 }