...
Run Format

Source file test/bench/go1/mandel_test.go

Documentation: test/bench/go1

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

View as plain text