2332f246df509159970841c491f59e1ae74ea703
[IRC.git] / Robust / src / Benchmarks / oooJava / raytracer / JGFTimer.java
1 import System;
2
3 /**************************************************************************
4 *                                                                         *
5 *             Java Grande Forum Benchmark Suite - Version 2.0             *
6 *                                                                         *
7 *                            produced by                                  *
8 *                                                                         *
9 *                  Java Grande Benchmarking Project                       *
10 *                                                                         *
11 *                                at                                       *
12 *                                                                         *
13 *                Edinburgh Parallel Computing Centre                      *
14 *                                                                         * 
15 *                email: epcc-javagrande@epcc.ed.ac.uk                     *
16 *                                                                         *
17 *                                                                         *
18 *      This version copyright (c) The University of Edinburgh, 1999.      *
19 *                         All rights reserved.                            *
20 *                                                                         *
21 **************************************************************************/
22
23
24
25 public class JGFTimer {
26
27   public String name; 
28   public String opname; 
29   public double time; 
30   public double opcount; 
31   public long calls; 
32   public int size;
33   
34   private long start_time;
35   private boolean on; 
36
37   public JGFTimer(String name, String opname){
38     this.name = name;
39     this.opname = opname;
40     size = -1;
41     reset(); 
42   }
43
44   public JGFTimer(String name, String opname, int size){
45     this.name = name;
46     this.opname = opname;
47     this.size = size;
48     reset();
49   }
50
51   public JGFTimer(String name){
52             this.name = name;
53             this.opname = "";
54             size = -1;
55             reset(); 
56   }
57
58
59
60   public void start(){
61     if (on) System.out.println("Warning timer " + name + " was already turned on");
62     on = true; 
63     start_time = System.currentTimeMillis();
64   }
65
66
67   public void stop(){
68     time += (double) (System.currentTimeMillis()-start_time) / 1000.;
69     if (!on) System.out.println("Warning timer " + name + " wasn't turned on");
70     calls++;
71     on = false;  
72   }
73
74   public void addops(double count){
75     opcount += count;
76   } 
77
78   public void reset(){
79     time = 0.0; 
80     calls = 0; 
81     opcount = 0; 
82     on = false;
83   }
84
85   public double perf(){
86 //        System.out.println("name="+name);
87 //        System.out.println("opcount="+opcount);
88 //        System.out.println("time="+time);
89           if(time==0){
90                   return 0;
91           }
92     return opcount / time; 
93   }
94
95   public void longprint(){
96       System.out.println("Timer            Calls         Time(s)       Performance("+opname+"/s)");   
97      System.out.println(name + "           " + calls +    "           "  +  time + "        " + this.perf());
98   }
99
100   public void print(){
101     if (opname.equals("")) {
102       System.out.println(name + "   " + time + " (s)");
103     }
104     else {
105
106
107         if(size == 0) {
108         System.out.println(name + ":SizeA" + "\t" + (long)time + " (s) \t " + (long)this.perf() + "\t" + " ("+opname+"/s)");
109         } else if (size == 1) {
110         System.out.println(name + ":SizeB" + "\t" + (long)time + " (s) \t " + (long)this.perf() + "\t" + " ("+opname+"/s)");
111         } else if (size == 2) {
112         System.out.println(name + ":SizeC" + "\t" + (long)time + " (s) \t " + (long)this.perf() + "\t" + " ("+opname+"/s)");
113         } else{
114         System.out.println(name + "\t" + (long)time + " (s) \t " + (long)this.perf() + "\t" + " ("+opname+"/s)");
115         }
116       
117         
118 //      switch(size) {
119 //      case 0:
120 //      System.out.println(name + ":SizeA" + "\t" + time + " (s) \t " + (float)this.perf() + "\t"
121 //                        + " ("+opname+"/s)");
122 //      break;
123 //      case 1:
124 //      System.out.println(name + ":SizeB" + "\t" + time + " (s) \t " + (float)this.perf() + "\t"
125 //                        + " ("+opname+"/s)");
126 //      break;
127 //      case 2:
128 //      System.out.println(name + ":SizeC" + "\t" + time + " (s) \t " + (float)this.perf() + "\t"
129 //                        + " ("+opname+"/s)");
130 //      break;
131 //      default:
132 //      System.out.println(name + "\t" + time + " (s) \t " + (float)this.perf() + "\t"
133 //                        + " ("+opname+"/s)");
134 //      break;
135 //      }
136
137     }
138   }
139
140
141   public void printperf(){
142
143      String name;
144      name = this.name; 
145
146      // pad name to 40 characters
147      while ( name.length() < 40 ) name = name + " "; 
148      
149      System.out.println(name + "\t" + (float)this.perf() + "\t"
150                         + " ("+opname+"/s)");  
151   }
152
153 }