/* * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly * modified to fit the benchmarking framework. * * The original file is `mandelbrot/mandelbrot.java` from the archive * available at * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip. * See LICENSE file in the same folder (BSD 3-clause) * * The Computer Language Benchmarks Game * http://benchmarksgame.alioth.debian.org/ * * contributed by Stefan Krause * slightly modified by Chad Whipkey */ /* * Description: Generate Mandelbrot set portable bitmap file. * Main Focus: TODO * */ package org.linaro.benchmarks.benchmarksgame; import java.io.IOException; import java.io.PrintStream; import java.lang.System; import org.openjdk.jmh.annotations.*; import java.util.concurrent.TimeUnit; @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) @State(Scope.Benchmark) // CHECKSTYLE.OFF: .* public class mandelbrot { private static final int PREDEFINED_SIZE = 200; private static final int BUFFER_SIZE = 8192; public mandelbrot() { this.size = PREDEFINED_SIZE; fac = 2.0 / size; shift = size % 8 == 0 ? 0 : (8- size % 8); } final int size; final byte [] buf = new byte[BUFFER_SIZE]; int bufLen = 0; final double fac; final int shift; public void compute() { for (int y = 0; y 4.0) && --i > 0); bits = bits << 1; if (i == 0) bits++; if (x%8 == 7) { bufLocal[bufLen++] = (byte) bits; if ( bufLen == BUFFER_SIZE) { bufLen = 0; } bits = 0; } } if (shift!=0) { bits = bits << shift; bufLocal[bufLen++] = (byte) bits; if ( bufLen == BUFFER_SIZE) { bufLen = 0; } } } // CHECKSTYLE.OFF: .* @Benchmark public void jmhTimeMandelbrot() { bufLen = 0; compute(); } }