This class lets you create stopwatch objects in your programs for use. Here are some examples on how to use the class:
Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); // your code stopwatch.stop(); System.out.println("Your code took " + stopwatch.getMilliseconds() + " milliseconds to execute.");
You can also use reset()
to reset the stopwatch back to 0 (keep in mind you have to then use start()
again to keep counting).
There are also multiple ways to represent the duration (not just in milliseconds): you can use getMilliseconds()
, getSeconds()
, or getMinutes()
.
Now here is the actual class:
/** * This is an instance class that simulates a stopwatch. * Note that the times returned by this class are only approximate; * floating point inaccuracy causes inaccurate results. * * @author Michael Yaworski of http://mikeyaworski.com * @version March 27, 2014 */ public class Stopwatch { /** * duration is the cumulative amount of time, in milliseconds, that has passed on the stopwatch between start() and stop() calls. * duration does have the amount of time since the last start() call if stop() has not been called after it at some point. * * start is the system time, in milliseconds, for when start() was called. */ private long duration = 0; private long start = 0; /** * When this flag is true, the stopwatch is still going (stop() hasn't been called since the last start() call), * and the duration doesn't update until it's stopped, so the time returned needs account for the actively counting time. */ private boolean active = false; /** * Starts the stopwatch. */ public void start() { this.start = System.currentTimeMillis(); this.active = true; } /** * Stops the stopwatch. */ public void stop() { if (this.active) this.duration += (System.currentTimeMillis() - this.start); this.active = false; } /** * Stops the stopwatch and resets the duration back to 0. */ public void reset() { this.duration = 0; this.start = 0; this.active = false; } /** * Restarts the stopwatch by calling reset() and then start(). Resets the stopwatch back to 0 and then starts it again. */ public void restart() { this.reset(); this.start(); } /** * Returns the duration of the stopwatch as a long, in milliseconds. * The duration starts when the stopwatch is first started using start() and is finished when the stopwatch is lastly stopped using stop(), * or when this method is called if the stopwatch was not stopped since most recently started. * * @return the duration of the stopwatch, in milliseconds, since it was started until it was stopped (or until this method is called if it was not stopped) */ public long getMilliseconds() { if (this.active) return this.duration + System.currentTimeMillis() - this.start; else return this.duration; } /** * Returns the duration of the stopwatch as a double, in seconds. * The duration starts when the stopwatch is first started using start() and is finished when the stopwatch is lastly stopped using stop(), * or when this method is called if the stopwatch was not stopped since most recently started. * * @return the duration of the stopwatch, in seconds, since it was started until it was stopped (or until this method is called if it was not stopped) */ public double getSeconds() { if (this.active) return (this.duration + System.currentTimeMillis() - this.start) / 1000d; else return this.duration / 1000d; } /** * Returns the duration of the stopwatch as a double, in minutes. * The duration starts when the stopwatch is first started using start() and is finished when the stopwatch is lastly stopped using stop(), * or when this method is called if the stopwatch was not stopped since most recently started. * * @return the duration of the stopwatch, in minutes, since it was started until it was stopped (or until this method is called if it was not stopped) */ public double getMinutes() { if (this.active) return (this.duration + System.currentTimeMillis() - this.start) / 60000d; else return this.duration / 60000d; } /** * Returns whether or not the stopwatch is currently active (has been started but not stopped since the most recent start() call). * * @return true if stopwatch is currently active (has been started but not stopped since the most recent start() call), and false otherwise. */ public boolean isGoing() { return this.active; } }DOWNLOAD
Created: March 24, 2014
Completed in full by: Michael Yaworski