Timing.java 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package measure;
  2. import java.util.Stack;
  3. import exceptions.TimingException;
  4. import util.StopWatch;
  5. public class Timing {
  6. StopWatch[][] watches;
  7. Stack<StopWatch> stack;
  8. public Timing() {
  9. watches = new StopWatch[P.size][M.size];
  10. for (int i = 0; i < P.size; i++)
  11. for (int j = 0; j < M.size; j++)
  12. watches[i][j] = new StopWatch(P.names[i] + "_" + M.names[j]);
  13. stack = new Stack<StopWatch>();
  14. }
  15. public void start(int p, int m) {
  16. if (!stack.empty()) {
  17. if (stack.peek() == watches[p][m])
  18. throw new TimingException("Stopwatch already added to stack");
  19. stack.peek().stop();
  20. }
  21. stack.push(watches[p][m]).start();
  22. }
  23. public void stop(int p, int m) {
  24. if (stack.empty())
  25. throw new TimingException("No stopwatch found");
  26. stack.pop().stop();
  27. if (!stack.empty())
  28. stack.peek().start();
  29. }
  30. public void print() {
  31. if (!stack.empty())
  32. throw new TimingException("Stack not empty");
  33. for (int i = 0; i < watches.length; i++)
  34. for (int j = 0; j < watches[i].length; j++)
  35. System.out.println(watches[i][j].toMS());
  36. }
  37. }