KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > tests > jfun > yan > benchmark > BenchLauncher


1 //==============================================================================
2
// Created on 2005-11-1
3
// $Id: BenchLauncher.java,v 1.1 2006/01/06 16:59:22 ajoo Exp $
4
//==============================================================================
5
package tests.jfun.yan.benchmark;
6
7 import java.text.NumberFormat JavaDoc;
8
9 public class BenchLauncher {
10
11   // private List benchmarks = new ArrayList();
12

13   // public BenchLauncher addBench(Benchmark bench) {
14
// benchmarks.add(bench);
15
// return this;
16
// }
17
public void launch(Benchmark bench,int benchTimes) {
18     launch(bench,benchTimes,false);
19   }
20   
21   public void launch(Benchmark bench, int benchTimes,boolean forceRun) {
22     long elapsed = 0;
23     double speed = 0, average = 0;
24
25    System.out.println("Benchmark of [" + (bench.getTitle()) + "]");
26     for (int i = 0; i < benchTimes; i++) {
27       bench.start(forceRun);
28       elapsed += bench.getElapsed();
29       speed += bench.getSpeed();
30       average += bench.getAverage();
31       rest();
32     }
33
34     // dump the info out
35
StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
36     NumberFormat JavaDoc nf = NumberFormat.getNumberInstance();
37     sb.append(" - Loops:\t").append(nf.format(bench.getLoops())).append("\n");
38     sb.append(" - Elapsed:\t").append(elapsed /(double)benchTimes).append(" ms\n");
39     sb.append(" - Average:\t").append(average /(double)benchTimes).append(" ms/call\n");
40     sb.append(" - Speed:\t").append(nf.format(speed/(double)benchTimes)).append(" calls/scond");
41
42     System.out.println(sb.toString());
43
44   }
45
46   public void rest() {
47     try {
48       Thread.sleep(100);
49       System.gc();
50       Thread.sleep(100);
51       System.gc();
52       Thread.sleep(100);
53     } catch (Exception JavaDoc e) {
54
55     }
56   }
57
58 }
59
Popular Tags