📄 timer.java
字号:
package com.pegasus.framework.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Timer {
private static final Log sLog = LogFactory.getLog(Timer.class);
String name;
long startTime;
long lastTime;
Collection events = new ArrayList();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-hhmmss.SSS");
public Timer(String name) {
this.name = name;
reset();
}
public void reset() {
synchronized (this) {
startTime = System.currentTimeMillis();
lastTime = startTime;
events.clear();
}
}
public void stampTime(String message) {
synchronized (this) {
Event event = new Event(message, startTime, lastTime);
events.add(event);
lastTime = event.getTime();
}
}
public Collection getEvents() {
return events;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("[name=" + name + ",startTime=" + dateFormat.format(new Date(startTime)) + ",lastTime="
+ dateFormat.format(new Date(lastTime)) + ",events={");
synchronized (this) {
if (events.size() > 0) {
int count = 1;
Iterator itr = events.iterator();
while (itr.hasNext()) {
Event event = (Event) itr.next();
sb.append(event.toString() + ",");
}
sb.setLength(sb.length() - 1);
}
}
return sb.toString();
}
public void writeLog() {
StringBuffer sb = new StringBuffer();
sb.append("name=" + name + " startTime=" + dateFormat.format(new Date(startTime)) + " lastTime="
+ dateFormat.format(new Date(lastTime)) + "\n");
synchronized (this) {
if (events.size() > 0) {
int count = 1;
Iterator itr = events.iterator();
while (itr.hasNext()) {
Event event = (Event) itr.next();
sb.append("no=" + add0(count++, 3) + " event=" + event + "\n");
}
}
}
sLog.info(sb.toString());
}
class Event {
String message;
long time;
long timeDiff;
long eventTimeDiff;
Event(String message, long startTime, long lastEventTime) {
this.message = message;
time = System.currentTimeMillis();
timeDiff = time - startTime;
eventTimeDiff = time - lastEventTime;
}
public long getTime() {
return time;
}
public long getTimeDiff() {
return timeDiff;
}
public long getEventTimeDiff() {
return eventTimeDiff;
}
public String toString() {
return "[diff=" + add0(timeDiff, 6) + ",eventDiff=" + add0(eventTimeDiff, 6) + ",message="
+ message + "]";
}
}
public static String add0(long v, int l) {
long lv = (long) Math.pow(10, l);
return String.valueOf(lv + v).substring(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -