start of new file
[IRC.git] / Robust / src / Benchmarks / Prefetch / Crypt / dsm / jgfutil / JGFInstrumentor.java
1 /**************************************************************************
2 *                                                                         *
3 *         Java Grande Forum Benchmark Suite - Thread Version 1.0          *
4 *                                                                         *
5 *                            produced by                                  *
6 *                                                                         *
7 *                  Java Grande Benchmarking Project                       *
8 *                                                                         *
9 *                                at                                       *
10 *                                                                         *
11 *                Edinburgh Parallel Computing Centre                      *
12 *                                                                         * 
13 *                email: epcc-javagrande@epcc.ed.ac.uk                     *
14 *                                                                         *
15 *                                                                         *
16 *      This version copyright (c) The University of Edinburgh, 1999.      *
17 *                         All rights reserved.                            *
18 *                                                                         *
19 **************************************************************************/
20 /**************************************************************************
21 *                       Ported for DSTM Benchmark                         *
22 **************************************************************************/
23
24
25 public class JGFInstrumentor{
26
27     private HashMap timers;
28     private HashMap data; 
29
30     public JGFInstrumentor()
31     {
32         timers = new HashMap();
33         data = new HashMap(); 
34     }
35
36     public void addTimer (String name){
37
38         if (timers.containsKey(name)) {
39             System.printString("JGFInstrumentor.addTimer: warning -  timer " + name + 
40                     " already exists");
41         }
42         else {
43             timers.put(name, new JGFTimer(name));
44         }
45     }
46
47     public void addTimer (String name, String opname){
48
49         if (timers.containsKey(name)) {
50             System.printString("JGFInstrumentor.addTimer: warning -  timer " + name + 
51                     " already exists");
52         }
53         else {
54             timers.put(name, new JGFTimer(name,opname));
55         }
56
57     }
58
59     public void addTimer (String name, String opname, int size){
60
61         if (timers.containsKey(name)) {
62             System.printString("JGFInstrumentor.addTimer: warning -  timer " + name +
63                     " already exists");
64         }
65         else {
66             timers.put(name, new JGFTimer(name,opname,size));
67         }
68
69     }
70
71     public void startTimer(String name){
72         if (timers.containsKey(name)) {
73             ((JGFTimer) timers.get(name)).start();
74         }
75         else {
76             System.printString("JGFInstrumentor.startTimer: failed -  timer " + name + 
77                     " does not exist");
78         }
79
80     }
81
82     public void stopTimer(String name){
83         if (timers.containsKey(name)) {
84             ((JGFTimer) timers.get(name)).stop();
85         }
86         else {
87             System.printString("JGFInstrumentor.stopTimer: failed -  timer " + name + 
88                     " does not exist");
89         }
90     }
91
92     public void addOpsToTimer(String name, double count){
93         if (timers.containsKey(name)) {
94             ((JGFTimer) timers.get(name)).addops(count);
95         }
96         else {
97             System.printString("JGFInstrumentor.addOpsToTimer: failed -  timer " + name + 
98                     " does not exist");
99         }
100     }  
101
102     public void addTimeToTimer(String name, double added_time){
103         if (timers.containsKey(name)) {
104             ((JGFTimer) timers.get(name)).addtime(added_time);
105         }
106         else {
107             System.printString("JGFInstrumentor.addTimeToTimer: failed -  timer " + name +
108                     " does not exist");
109         }
110
111
112
113     }
114
115     public double readTimer(String name){
116         double time; 
117         if (timers.containsKey(name)) {
118             time = ((JGFTimer) timers.get(name)).time;
119         }
120         else {
121             System.printString("JGFInstrumentor.readTimer: failed -  timer " + name + 
122                     " does not exist");
123             time = 0.0; 
124         }
125         return time; 
126     }  
127
128     public void resetTimer(String name){
129         if (timers.containsKey(name)) {
130             ((JGFTimer) timers.get(name)).reset();
131         }
132         else {
133             System.printString("JGFInstrumentor.resetTimer: failed -  timer " + name +
134                     " does not exist");
135         }
136     }
137
138     public void printTimer(String name){
139         if (timers.containsKey(name)) {
140             ((JGFTimer) timers.get(name)).print();
141         }
142         else {
143             System.printString("JGFInstrumentor.printTimer: failed -  timer " + name +
144                     " does not exist");
145         }
146     }
147
148     public void printperfTimer(String name){
149         if (timers.containsKey(name)) {
150             ((JGFTimer) timers.get(name)).printperf();
151         }
152         else {
153             System.printString("JGFInstrumentor.printTimer: failed -  timer " + name +
154                     " does not exist");
155         }
156     }
157
158     public void storeData(String name, Object obj){
159         data.put(name,obj); 
160     }
161
162     public void retrieveData(String name, Object obj){
163         obj = data.get(name); 
164     }
165
166     public void printHeader(int section, int size,int nthreads) {
167
168         String header, base; 
169
170         header = "";
171         base = "Java Grande Forum Thread Benchmark Suite - Version 1.0 - Section "; 
172
173         if (section == 1)
174         {
175             header = base + "1";
176         }
177         else if (section == 2)
178         {
179             if (size == 0)
180                 header = base + "2 - Size A";
181             else if (size == 1)
182                 header = base + "2 - Size B";
183             else if (size == 2)
184                 header = base + "2 - Size C";
185         }
186         else if (section == 3)
187         {
188             if (size == 0)
189                 header = base + "3 - Size A";
190             else if (size == 1)
191                 header = base + "3 - Size B";
192         }
193
194         System.printString(header); 
195
196         if (nthreads == 1) {
197             System.printString("Executing on " + nthreads + " thread");
198         }
199         else {
200             System.printString("Executing on " + nthreads + " threads");
201         }
202
203         System.printString("");
204
205     } 
206 }