概述
一般程序运行都参考每一步所用时间,用来反映程序的性能,TimeWatchUtil工具类就是实现此功能的工具。
-
package com.dyb.util;
-
-
import java.util.ArrayList;
-
import java.util.List;
-
-
/**
-
*
-
*<p>
-
*description:主要用来调试程序,观察程序运行每一步所用的时间
-
*</p>
-
* @author
-
* @since 2015-10-19
-
* @see
-
*/
-
public class TimeWatchUtil {
-
/**
-
* 创建开始时间
-
*/
-
private long start;
-
/**
-
* 节点数据(一般保存结束时间数据)
-
*/
-
private List<Object> sections;
-
/**
-
* 节点名称
-
*/
-
private List<Object> sectionNames;
-
-
/**
-
* 观察名称,下面包括很多的sectionNames,watchName属于sectionNames的整体,便于观察定位
-
*/
-
private String watchName;
-
-
public static TimeWatchUtil createTimeWatch(String watchName){
-
TimeWatchUtil timeWatch = new TimeWatchUtil();
-
timeWatch.watchName = watchName;
-
return timeWatch;
-
}
-
-
protected TimeWatchUtil(){
-
sections = new ArrayList<>(); //初始化sections
-
sectionNames = new ArrayList<>(); //初始化sectionNames
-
start = System.currentTimeMillis(); //当前系统开始时间
-
}
-
-
public void addStep(String stepName){
-
sectionNames.add(stepName); //每一步节点的名称
-
sections.add(Long.valueOf(System.currentTimeMillis())); //节点开始时间
-
}
-
-
public String outputTimeList(){
-
watchName = watchName.trim();
-
StringBuffer outStr = new StringBuffer();
-
//整体观察名称
-
outStr.append( "[TIMEWATCH] ");
-
outStr.append(watchName);
-
outStr.append( ":");
-
outStr.append( " [DETAILS] ");
-
//输出每一个节点的名称和花费时间
-
long last = start;
-
for( int i= 0;i < sections.size();i++){
-
long temp = ((Long)sections.get(i)).longValue();
-
outStr.append( "" + (String)sectionNames.get(i) + ":" );
-
outStr.append(( double)(temp - last));
-
outStr.append( " ");
-
last = temp;
-
}
-
//总体花费时间
-
long totalWaste = 0;
-
if(sections != null && sections.size() > 0){
-
totalWaste = ((Long)sections.get(sections.size()- 1)).longValue() - start;
-
}
-
//将总体花费时间插入到名称watchName的后面。"[TIMEWATCH] "和":"长度是13
-
outStr.insert(watchName.length() + 13, totalWaste);
-
-
return outStr.toString();
-
}
-
}
使用方法:junit单元测试
-
package com.dyb.util;
-
-
import org.junit.Test;
-
-
public class TestWatch {
-
-
public void test() throws InterruptedException{
-
TimeWatchUtil tw = TimeWatchUtil.createTimeWatch( "TestWatch");
-
Thread.sleep( 1000);
-
tw.addStep( "1");
-
Thread.sleep( 2000);
-
tw.addStep( "2");
-
Thread.sleep( 3000);
-
tw.addStep( "3");
-
System.out.println(tw.outputTimeList());
-
}
-
}
输出结果:[TIMEWATCH] TestWathc:6000 [DETAILS] 1:1000.0 2:2000.0 3:3000.0
最后
以上就是细心发夹为你收集整理的java调试程序中每一步所用时间工具类的全部内容,希望文章能够帮你解决java调试程序中每一步所用时间工具类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复