session-android/src/org/thoughtcrime/securesms/util/Stopwatch.java

59 lines
1.4 KiB
Java
Raw Normal View History

package org.thoughtcrime.securesms.util;
import android.support.annotation.NonNull;
import org.thoughtcrime.securesms.logging.Log;
import java.util.LinkedList;
import java.util.List;
public class Stopwatch {
private final long startTime;
private final String title;
private final List<Split> splits;
public Stopwatch(@NonNull String title) {
this.startTime = System.currentTimeMillis();
this.title = title;
this.splits = new LinkedList<>();
}
public void split(@NonNull String label) {
splits.add(new Split(System.currentTimeMillis(), label));
}
public void stop(@NonNull String tag) {
StringBuilder out = new StringBuilder();
out.append("[").append(title).append("] ");
if (splits.size() > 0) {
out.append(splits.get(0).label).append(": ");
out.append(splits.get(0).time - startTime);
out.append(" ");
}
if (splits.size() > 1) {
for (int i = 1; i < splits.size(); i++) {
out.append(splits.get(i).label).append(": ");
out.append(splits.get(i).time - splits.get(i - 1).time);
out.append(" ");
}
out.append("total: ").append(splits.get(splits.size() - 1).time - startTime);
}
Log.d(tag, out.toString());
}
private static class Split {
final long time;
final String label;
Split(long time, String label) {
this.time = time;
this.label = label;
}
}
}