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>
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
}
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
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
}