一个java时间辅助工具类
2013-02-16 18:58
155 查看
TimeMeasure是我以前写的一个java 辅助类,开发人员可以用它们在控制台打印任意两个步骤之间的时间消耗。中途可以pause这个时间计数方法,然后再resume回来,pause的时间是不计入到实际方法消耗的时间的。使用方法见TimeMeasure的main方法,另外如果你愿意,可以拓展它用log4j或者其他方式输出到文件。
TimeMeasure.java
Java代码
public class TimeMeasure {
// PTODO create junit test class
private static HashMap<String, TimeStack> timers;
private static int indent = 0;
/**
* measureActive is true by default. A true value means that all methods calls are processed else no one.
*/
public static boolean measureActive = true;
/**
* display is true by default. A true value means that all informations are displayed.
*/
public static boolean display = true;
public static boolean displaySteps = true;
/**
*
* DOC hywang Comment method "start".
*
* @param idTimer
*/
public static void begin(String idTimer) {
if (!measureActive) {
return;
}
init();
if (timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (start): timer " + idTimer + " already exists"); //$NON-NLS-1$ //$NON-NLS-2$
}
} else {
indent++;
TimeStack times = new TimeStack();
timers.put(idTimer, times);
if (display) {
System.out.println(indent(indent) + "Start '" + idTimer + "' ..."); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
/**
*
* DOC hywang Comment method "end".
*
* @param idTimer
* @return total elapsed time since start in ms
*/
public static long end(String idTimer) {
if (!measureActive) {
return 0;
}
init();
if (!timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (end): timer " + idTimer + " doesn't exist"); //$NON-NLS-1$ //$NON-NLS-2$
}
return -1;
} else {
TimeStack timeStack = timers.get(idTimer);
timers.remove(idTimer);
long elapsedTimeSinceLastRequest = timeStack.getLastStepElapsedTime();
if (display && displaySteps) {
System.out.println(indent(indent) + "End '" + idTimer + "', elapsed time since last request: " //$NON-NLS-1$ //$NON-NLS-2$
+ elapsedTimeSinceLastRequest + " ms "); //$NON-NLS-1$
}
long totalElapsedTime = timeStack.getTotalElapsedTime();
if (display) {
System.out.println(indent(indent) + "End '" + idTimer + "', total elapsed time: " + totalElapsedTime + " ms "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
indent--;
return totalElapsedTime;
}
}
/**
*
* DOC hywang Comment method "timeSinceBegin".
*
* @param idTimer
* @return total elapsed time since start in ms
*/
public static long timeSinceBegin(String idTimer) {
if (!measureActive) {
return 0;
}
init();
if (!timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (end): timer " + idTimer + " does'nt exist"); //$NON-NLS-1$ //$NON-NLS-2$
}
return -1;
} else {
long time = timers.get(idTimer).getTotalElapsedTime();
if (display) {
System.out.println(indent(indent) + "-> '" + idTimer + "', elapsed time since start: " + time + " ms "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
return time;
}
}
TimeMeasure.java
Java代码
public class TimeMeasure {
// PTODO create junit test class
private static HashMap<String, TimeStack> timers;
private static int indent = 0;
/**
* measureActive is true by default. A true value means that all methods calls are processed else no one.
*/
public static boolean measureActive = true;
/**
* display is true by default. A true value means that all informations are displayed.
*/
public static boolean display = true;
public static boolean displaySteps = true;
/**
*
* DOC hywang Comment method "start".
*
* @param idTimer
*/
public static void begin(String idTimer) {
if (!measureActive) {
return;
}
init();
if (timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (start): timer " + idTimer + " already exists"); //$NON-NLS-1$ //$NON-NLS-2$
}
} else {
indent++;
TimeStack times = new TimeStack();
timers.put(idTimer, times);
if (display) {
System.out.println(indent(indent) + "Start '" + idTimer + "' ..."); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
/**
*
* DOC hywang Comment method "end".
*
* @param idTimer
* @return total elapsed time since start in ms
*/
public static long end(String idTimer) {
if (!measureActive) {
return 0;
}
init();
if (!timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (end): timer " + idTimer + " doesn't exist"); //$NON-NLS-1$ //$NON-NLS-2$
}
return -1;
} else {
TimeStack timeStack = timers.get(idTimer);
timers.remove(idTimer);
long elapsedTimeSinceLastRequest = timeStack.getLastStepElapsedTime();
if (display && displaySteps) {
System.out.println(indent(indent) + "End '" + idTimer + "', elapsed time since last request: " //$NON-NLS-1$ //$NON-NLS-2$
+ elapsedTimeSinceLastRequest + " ms "); //$NON-NLS-1$
}
long totalElapsedTime = timeStack.getTotalElapsedTime();
if (display) {
System.out.println(indent(indent) + "End '" + idTimer + "', total elapsed time: " + totalElapsedTime + " ms "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
indent--;
return totalElapsedTime;
}
}
/**
*
* DOC hywang Comment method "timeSinceBegin".
*
* @param idTimer
* @return total elapsed time since start in ms
*/
public static long timeSinceBegin(String idTimer) {
if (!measureActive) {
return 0;
}
init();
if (!timers.containsKey(idTimer)) {
if (display) {
System.out.println(indent(indent) + "Warning (end): timer " + idTimer + " does'nt exist"); //$NON-NLS-1$ //$NON-NLS-2$
}
return -1;
} else {
long time = timers.get(idTimer).getTotalElapsedTime();
if (display) {
System.out.println(indent(indent) + "-> '" + idTimer + "', elapsed time since start: " + time + " ms "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
return time;
}
}
相关文章推荐
- 一个好的Java时间工具类DateTime
- #.java-POI导出excel的一个辅助工具类
- 用JAVA实现:非递归算法在O(n)时间内将一个含有n个元素的单链表逆置,要求其辅助空间为常量
- 分享一个关于Java日期时间的工具类
- 计算Java中任意一个方法的执行时间的工具类
- java日期时间处理工具类封装
- java鬼混笔记:redis 3、java下使用redis,自定义一个工具类RedisUtil
- Java判断一个字符串中是否包含中文字符工具类
- Android开发之java代码中获取当前系统的时间工具类
- Java常用的时间工具类实例
- Java将Unix时间戳转换成指定格式日期字符串工具类
- 一个java正规表达式工具类
- Java日期工具类,Java时间工具类,Java时间格式化
- hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java
- java按照月份把一个时间段拆分成多个时间区间
- java如何监控一个方法的运行时间 [问题点数
- JAVA时间处理工具类
- java起一个定时任务,在规定的时间内自动执行
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- Java判断一个时间是否在另一个时间段内