Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
Timer.java
1 package ij.plugin;
2 import java.awt.*;
3 import ij.*;
4 
6 public class Timer implements PlugIn {
7  int j=0;
8  long startTime, nullLoopTime;
9  int numLoops;
10 
11 
12  public void run(String arg) {
13  int j=0, k;
14  int[] a = new int[10];
15  long endTime;
16 
17  /*
18  startTime = System.currentTimeMillis();
19  //for (int i=0; i<100; i++) IJ.wait(10);
20  for (int i=0; i<100; i++) Thread.yield();
21  long elapsedTime = System.currentTimeMillis() - startTime;
22  IJ.write(elapsedTime + " ms");
23  */
24 
25  numLoops = 10000;
26  do {
27  numLoops = (int)(numLoops*1.33);
28  startTime = System.currentTimeMillis();
29  for (int i=0; i<numLoops; i++) {}
30  nullLoopTime = System.currentTimeMillis() - startTime;
31  //IJ.write("loops=" + numLoops + ", nullLoopTime=" + nullLoopTime);
32  } while (nullLoopTime<250);
33 
34  IJ.write("");
35  IJ.write("Timer: " + numLoops + " iterations (" + nullLoopTime + "ms)");
36  Timer2 o = new Timer2();
37 
38  // null loop
39  startTime = System.currentTimeMillis();
40  for (int i=0; i<numLoops; i++) {}
41  showTime("null loop");
42 
43  // i = o.getJ()
44  startTime = System.currentTimeMillis();
45  for (int i=0; i<numLoops; i++) {k = o.getJ();}
46  showTime("i=o.getJ()");
47 
48  // i = o.getJFinal()
49  startTime = System.currentTimeMillis();
50  for (int i=0; i<numLoops; i++) {k = o.getJFinal();}
51  showTime("i=o.getJ() (final)");
52 
53  // i = o.getJClass()
54  startTime = System.currentTimeMillis();
55  for (int i=0; i<numLoops; i++) {k = o.getJClass();}
56  showTime("i=o.getJ() (static)");
57 
58  // i=o.j
59  startTime = System.currentTimeMillis();
60  for (int i=0; i<numLoops; i++) {k = o.j;}
61  showTime("i=o.j");
62 
63  // i=o.jStatic
64  startTime = System.currentTimeMillis();
65  for (int i=0; i<numLoops; i++) {k = Timer2.k;}
66  showTime("i=o.j (static)");
67 
68  // i=j
69  startTime = System.currentTimeMillis();
70  for (int i=0; i<numLoops; i++) {k = j;}
71  showTime("i=j");
72 
73  // i=a[j]
74  startTime = System.currentTimeMillis();
75  for (int i=0; i<numLoops; i++) {k = a[j];}
76  showTime("i=a[j]");
77 
78  /*
79  long startTime = System.currentTimeMillis();
80  for (int i=0; i<=numLoops; i++) {
81  IJ.wait(51);
82  if (i%50 == 0 )
83  IJ.showProgress(i/(double)numLoops);
84  }
85  long endTime = System.currentTimeMillis();
86  IJ.write(" showProgress(): " + (endTime - startTime) + "msecs");
87 
88  startTime = System.currentTimeMillis();
89  for (int i=0; i<=numLoops; i++) {
90  long time = System.currentTimeMillis();
91  }
92  endTime = System.currentTimeMillis();
93  IJ.write(" System.currentTimeMillis(): " + (endTime - startTime) + "msecs");
94  */
95  }
96 
97 
98  void showTime(String s) {
99  long elapsedTime = System.currentTimeMillis() - startTime - nullLoopTime;
100  IJ.write(" " + s + ": " + (elapsedTime*1000000)/numLoops + " ns");
101  }
102 
103 
104  /*
105  void test() {
106  //IJ.showMessage("Available for testing");
107  //timer();
108  //barTest();
109 
110  new Main();
111  }
112 
113  void memoryTest() {
114  int i=0;
115  MemTest foo=null;
116  try {
117  while (true) {
118  foo=new MemTest(foo,100000);
119  i++;
120  }
121  } catch (OutOfMemoryError e) {
122  IJ.log("out of memory at "+i);
123  }
124  }
125  */
126 
127 }
128 
129 
130  class Timer2 {
131  int j=0;
132  static int k=0;
133 
134  public int getJ() {return j;}
135  public final int getJFinal() {return j;}
136  public static int getJClass() {return k;}
137  }
138 
139 
140 /*
141 class MemTest{
142  MemTest last; //to keep last one from being garbage collected
143  byte[] buf;
144 
145  public MemTest(MemTest last, int size) {
146  this.last=last;
147  buf=new byte[size];
148  }
149 }
150 
151 
152 class Main extends Frame {
153  Main() {
154  super("Dialog Example");
155  add("West", new Button("Modal"));
156  add("East", new Button("Modeless"));
157  pack();
158  show();
159  }
160 
161  public boolean action(Event evt, Object what) {
162  if ("Modal".equals(what)) {
163  new MainDialog(this, true);
164  return true;
165  } else if ("Modeless".equals(what)) {
166  new MainDialog(this, false);
167  return true;
168  }
169  return false;
170  }
171 
172  static public void main(String[] args) {
173  new Main();
174  }
175 }
176 
177 
178 class MainDialog extends Dialog {
179  // These two integers hold the location of the last window.
180  // New windows are created at an offset to the previous one.
181  static int offsetX, offsetY;
182 
183  MainDialog(Frame frame, boolean modal) {
184  super(frame, modal);
185  setTitle(isModal() ? "Modal" : "Modeless");
186  add("Center", new Button("Quit"));
187  offsetX += 20;
188  offsetY += 20;
189  setLocation(offsetX, offsetY);
190  pack();
191  show();
192  }
193 
194  public boolean action(Event evt, Object what) {
195  if ("Quit".equals(what)) {
196  dispose();
197  return true;
198  }
199  return false;
200  }
201 }
202 */
203 
204