Skip to content

Instantly share code, notes, and snippets.

@de314
Created February 9, 2017 04:05
Show Gist options
  • Save de314/d9ed80437cc44a6e475c29695d3323c6 to your computer and use it in GitHub Desktop.
Save de314/d9ed80437cc44a6e475c29695d3323c6 to your computer and use it in GitHub Desktop.
Java Timer Util
public class Timer {
private long startTime = System.currentTimeMillis();
private long lapStartTime = System.currentTimeMillis();
private List<Long> laps = new ArrayList<>(LAPS_COUNT);
private long endTime = System.currentTimeMillis();
public void start() {
startTime = System.currentTimeMillis();
lapStartTime = startTime;
}
public void lap() {
long newLap = System.currentTimeMillis();
laps.add(newLap - lapStartTime);
lapStartTime = newLap;
}
public void stop() {
endTime = System.currentTimeMillis();
}
public void clear() {
laps.clear();
}
public void print() {
System.out.println(this.toString());
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("StartTime: ").append(this.startTime);
sb.appendCodePoint('\n');
sb.append("EndTime: ").append(this.endTime);
sb.appendCodePoint('\n');
sb.append("Duration: ").append(this.endTime - this.startTime);
sb.appendCodePoint('\n');
sb.append("Laps: ").append(this.laps.size());
sb.append("\n\tmax: ").append(laps.stream().max((a,b) -> a.compareTo(b)).orElse(0L));
sb.append("\n\tmin: ").append(laps.stream().min((a,b) -> a.compareTo(b)).orElse(0L));
double avg = laps.stream().map(longNum -> (double)longNum).collect(Collectors.reducing((a, b) -> a + b)).orElse(1.0) / laps.size();
sb.append("\n\tavg: ").append(avg);
sb.append("\n\tsteps/sec ").append(1000.0/avg);
// sb.append("\n\t").append(Joiner.on(", ").join(laps));
return sb.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment