package water.util;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
* Simple Timer class.
**/
public class Timer {
private static final DateTimeFormatter longFormat = DateTimeFormat.forPattern("dd-MMM HH:mm:ss.SSS");
private static final DateTimeFormatter shortFormat= DateTimeFormat.forPattern( "HH:mm:ss.SSS");
private static final DateTimeFormatter logFormat = DateTimeFormat.forPattern( "MM-dd HH:mm:ss.SSS");
final long _start = System.currentTimeMillis();
final long _nanos = System.nanoTime();
/**Return the difference between when the timer was created and the current time. */
public long time() { return System.currentTimeMillis() - _start; }
public long nanos(){ return System.nanoTime() - _nanos; }
/** Return the difference between when the timer was created and the current
* time as a string along with the time of creation in date format. */
@Override public String toString() {
final long now = System.currentTimeMillis();
return PrettyPrint.msecs(now - _start, false) + " (Wall: " + longFormat.print(now) + ") ";
}
/** return the start time of this timer.**/
String startAsString() { return longFormat.print(_start); }
/** return the start time of this timer.**/
String startAsShortString() { return shortFormat.print(_start); }
/**
* Used by Logging (Log.java) for creating a timestamp in front of each output line.
*/
static String nowAsLogString() { return logFormat.print(DateTime.now()); }
}