/mobile Handheld Friendly website
Ubuntu : Intel® Q6600® quad-core |
Each table row shows performance measurements for this Java 7 program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 1,000 | 0.26 | 0.12 | ? | 796 | 42% 38% 45% 85% |
| 4,000 | 1.88 | 0.54 | 15,804 | 796 | 85% 85% 87% 96% |
| 16,000 | 27.14 | 6.90 | 67,612 | 796 | 98% 98% 99% 99% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read mandelbrot benchmark to see what this program should do.
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)
/* The Computer Language Benchmarks Game * http://benchmarksgame.alioth.debian.org/ * * contributed by Stefan Krause * slightly modified by Chad Whipkey * parallelized by Colin D Bennett 2008-10-04 * reduce synchronization cost by The Anh Tran * optimizations and refactoring by Enotus 2010-11-11 * optimization by John Stalcup 2012-2-19 */ import java.io.*; import java.util.concurrent.atomic.*; public final class mandelbrot { static byte[][] out; static AtomicInteger yCt; static double[] Crb; static double[] Cib; static int getByte(int x, int y){ int res=0; for(int i=0;i<8;i+=2){ double Zr1=Crb[x+i]; double Zi1=Cib[y]; double Zr2=Crb[x+i+1]; double Zi2=Cib[y]; int b=0; int j=49;do{ double nZr1=Zr1*Zr1-Zi1*Zi1+Crb[x+i]; double nZi1=Zr1*Zi1+Zr1*Zi1+Cib[y]; Zr1=nZr1;Zi1=nZi1; double nZr2=Zr2*Zr2-Zi2*Zi2+Crb[x+i+1]; double nZi2=Zr2*Zi2+Zr2*Zi2+Cib[y]; Zr2=nZr2;Zi2=nZi2; if(Zr1*Zr1+Zi1*Zi1>4){b|=2;if(b==3)break;} if(Zr2*Zr2+Zi2*Zi2>4){b|=1;if(b==3)break;} }while(--j>0); res=(res<<2)+b; } return res^-1; } static void putLine(int y, byte[] line){ for (int xb=0; xb<line.length; xb++) line[xb]=(byte)getByte(xb*8,y); } public static void main(String[] args) throws Exception { int N=6000; if (args.length>=1) N=Integer.parseInt(args[0]); Crb=new double[N+7]; Cib=new double[N+7]; double invN=2.0/N; for(int i=0;i<N;i++){ Cib[i]=i*invN-1.0; Crb[i]=i*invN-1.5; } yCt=new AtomicInteger(); out=new byte[N][(N+7)/8]; Thread[] pool=new Thread[2*Runtime.getRuntime().availableProcessors()]; for (int i=0;i<pool.length;i++) pool[i]=new Thread(){ public void run() { int y; while((y=yCt.getAndIncrement())<out.length) putLine(y,out[y]); } }; for (Thread t:pool) t.start(); for (Thread t:pool) t.join(); OutputStream stream = new BufferedOutputStream(System.out); stream.write(("P4\n"+N+" "+N+"\n").getBytes()); for(int i=0;i<N;i++) stream.write(out[i]); stream.close(); } }
Mon, 21 Jan 2013 05:10:19 GMT MAKE: mv mandelbrot.java-2.java mandelbrot.java /usr/local/src/jdk1.7.0_11/bin/javac mandelbrot.java 0.57s to complete and log all make actions COMMAND LINE: /usr/local/src/jdk1.7.0_11/bin/java -server -XX:+TieredCompilation -XX:+AggressiveOpts mandelbrot 16000 (BINARY) PROGRAM OUTPUT NOT SHOWN