/bench/kilim/bench/Stopwatch.java

http://github.com/kilim/kilim · Java · 63 lines · 37 code · 14 blank · 12 comment · 2 complexity · 34380f4ba770ec9d5b1f97a6b8cc9dcc MD5 · raw file

  1. /* Copyright (c) 2006, Sriram Srinivasan
  2. *
  3. * You may distribute this software under the terms of the license
  4. * specified in the file "License"
  5. */
  6. package kilim.bench;
  7. public class Stopwatch {
  8. long lastTickMillis = System.currentTimeMillis();
  9. long lastElapsedMillis = 0;
  10. int multiplier = 1; // see reportMicros
  11. String unit = " ms";
  12. String name = "";
  13. public Stopwatch() {tick();}
  14. public Stopwatch(String nm) {name = nm; tick();}
  15. /**
  16. * @return the diff in millis from the last tick. Both tick and elapsed times are
  17. * kept in millis
  18. */
  19. public long tick() {
  20. long l = lastTickMillis;
  21. lastTickMillis = System.currentTimeMillis();
  22. lastElapsedMillis = lastTickMillis - l;
  23. return lastElapsedMillis;
  24. }
  25. /**
  26. * Report in micros or millis
  27. */
  28. public void reportMicros() {multiplier = 1000; unit = " micros";}
  29. public void reportMillis() {multiplier = 1; unit = " ms";}
  30. public long timePerIter(int iters) {
  31. return iters == 0? 0 : lastElapsedMillis*multiplier/iters;
  32. }
  33. long itersPerTime(int iters) {
  34. return lastElapsedMillis == 0 ? iters : iters/(lastElapsedMillis*multiplier);
  35. }
  36. public String toString() {
  37. return name + ": elapsed: " + (lastElapsedMillis * multiplier) + " " + unit;
  38. }
  39. public String toString(int iters) {
  40. return name + " elapsed: " + (lastElapsedMillis * multiplier) +
  41. unit +", iters = " + iters +
  42. ", " + unit + "/iter = " + timePerIter(iters) +
  43. ", iters/" + unit + " = " + itersPerTime(iters);
  44. }
  45. public void print() {System.out.println(this);}
  46. public void print(int iters) { System.out.println(this.toString(iters));}
  47. public void tickPrint() {tick(); print();}
  48. public void tickPrint(int iters) {tick(); print(iters);}
  49. }