From ffb4708d1bcf4a391ecf293b01695565c1b7cd04 Mon Sep 17 00:00:00 2001 From: Michael Munday Date: Sat, 9 Sep 2017 00:22:29 +0100 Subject: [PATCH] math: fix Abs, Copysign and Signbit benchmarks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/math/all_test.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/math/all_test.go b/src/math/all_test.go index 7409d8b141..d0630aef44 100644 --- a/src/math/all_test.go +++ b/src/math/all_test.go @@ -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 } -- 2.50.0