文档章节

java调试程序中每一步所用时间工具类

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 389
阅读 25
收藏 0

一般程序运行都参考每一步所用时间,用来反映程序的性能,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 {
    @Test
    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 


本文转载自:http://blog.csdn.net/bq1073100909/article/details/49251337

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用

基于Sun HotSpot JVM 这里将介绍几款sun hotspot jvm 自带的监控工具: 请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下 jps(JVM Process Status Tool):JVM机进程...

我类个擦
2014/09/12
0
1
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat

jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具...

anfield
2010/12/02
0
5
java远程调试与JVM调优工具

Java远程调试方法: 1、被调试程序当作调试服务器(本地主动连接远程服务器,需要用如下命令让远程服务器jvm开启调试模式)。 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8765 ...

chape
2013/12/24
0
0
Java常识:IDE、JRE、JDK等字段的阐述

目前对这些最基本的常识都难以阐述,颇觉羞愧,果断整理出来。 IDE(Integrated Development 集成开发环境),集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、...

MiniBu
2014/05/06
0
0
用 JNI 进行 Java 编程(2)

从 Java 程序调用 C/C++ 代码 概述 当无法用 Java 语言编写整个应用程序时,JNI 允许您使用本机代码。在下列典型情况下,您可能决定使用本机代码: 希望用更低级、更快的编程语言去实现对时间...

Jerikc
2012/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
1
0
12.17 Nginx负载均衡

Nginx负载均衡 下面的dig看到可以返回2个IP,就是解析出来的IP,这样我们可以做负载均衡。 dig www.qq.com 1.vim /usr/local/nginx/conf/vhost/fuzai.conf 2.添加如下配置 upstream qq //定义...

芬野de博客
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部