01: //$Id$
02: //=====================================================================
03: //
04: //(history at end)
05: //
06:
07: package ch.ethz.prose.jikesrvm;
08:
09: import ch.ethz.inf.util.junit.PerformanceTest;
10:
11: import com.ibm.JikesRVM.VM_Time;
12:
13: /**
14: * Chronometers are adapted to use the CPU cycle counter from Jikes RVM.
15: *
16: * version $Revision$
17: * @author Johann Gyger
18: */
19: public class JikesRVMPerformanceTest extends PerformanceTest {
20:
21: public static final double MILLIS_TO_NANOS = 1000000.0;
22:
23: protected static long startCycle;
24:
25: protected static long endCycle;
26:
27: public JikesRVMPerformanceTest(String name) {
28: super (name);
29: }
30:
31: public static void startChronometer() {
32: startCycle = VM_Time.cycles();
33: }
34:
35: public static void stopChronometer() {
36: endCycle = VM_Time.cycles();
37: }
38:
39: /**
40: * @return duration in nanoseconds (!)
41: */
42: public long readChronometer() {
43: return (long) (VM_Time.cyclesToMillis(endCycle - startCycle) * MILLIS_TO_NANOS);
44: }
45:
46: }
47:
48: //======================================================================
49: //
50: // $Log$
51: //
|