From 73df946d56c74384511a194dd01dbe099584fd1a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 15:14:23 +0200 Subject: Adding upstream version 1.16.10. Signed-off-by: Daniel Baumann --- test/bench/go1/mandel_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/bench/go1/mandel_test.go (limited to 'test/bench/go1/mandel_test.go') diff --git a/test/bench/go1/mandel_test.go b/test/bench/go1/mandel_test.go new file mode 100644 index 0000000..dd543b2 --- /dev/null +++ b/test/bench/go1/mandel_test.go @@ -0,0 +1,41 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This benchmark, taken from the shootuot, tests floating point performance. + +package go1 + +import "testing" + +func mandelbrot(n int) int { + const Iter = 50 + const Zero float64 = 0 + const Limit = 2.0 + ok := 0 + for y := 0; y < n; y++ { + for x := 0; x < n; x++ { + Zr, Zi, Tr, Ti := Zero, Zero, Zero, Zero + Cr := (2*float64(x)/float64(n) - 1.5) + Ci := (2*float64(y)/float64(n) - 1.0) + + for i := 0; i < Iter && (Tr+Ti <= Limit*Limit); i++ { + Zi = 2*Zr*Zi + Ci + Zr = Tr - Ti + Cr + Tr = Zr * Zr + Ti = Zi * Zi + } + + if Tr+Ti <= Limit*Limit { + ok++ + } + } + } + return ok +} + +func BenchmarkMandelbrot200(b *testing.B) { + for i := 0; i < b.N; i++ { + mandelbrot(200) + } +} -- cgit v1.2.3