Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>JAVA基础>>使用StopWatch类来计时
使用StopWatch类来计时
2007-04-13   来源:www.javaresearch.org  作者:未知

  调试器是一个繁重的东西,使用调试器并不总是最有效的方法;有时,你可能想对代码进行一些小的调试和跟踪。一个简单的StopWatch类就是提供了一种好的计时解决方案。

  1. package com.generationjava.test;
  2. /**
  3.  * 在调试或者测试情形下需要计时非常有用
  4.  */
  5. public class StopWatch {
  6.   static public int AN_HOUR = 60 * 60 * 1000;
  7.   static public int A_MINUTE = 60 * 1000;
  8.   private long startTime = -1;
  9.   private long stopTime = -1;
  10.   /**
  11.    * 启动秒表
  12.    */
  13.   public void start() {
  14.     this.startTime =System.currentTimeMillis();
  15.   }
  16.   /**
  17.    * 停止秒表
  18.    */
  19.   public void stop() {
  20.     this.stopTime =System.currentTimeMillis();
  21.   }
  22.   /**
  23.    * 重置秒表
  24.    */
  25.   public void reset() {
  26.     this.startTime = -1;
  27.     this.stopTime = -1;
  28.   }
  29.   /**
  30.    * 分割时间
  31.    */
  32.   public void split() {
  33.     this.stopTime =System.currentTimeMillis();
  34.   }
  35.   /**
  36.    * 移除分割
  37.    */
  38.   public void unsplit() {
  39.     this.stopTime = -1;
  40.   }
  41.   /**
  42.    * 获得秒表的时间,这个时间或者是启动时和最后一个分割时刻的时间差,
  43.    * 或者是启动时和停止时的时间差,或者是启动时和这个方法被调用时的差
  44.    */
  45.   public long getTime() {
  46.     if(stopTime != -1) {
  47.       return(System.currentTimeMillis() - this.startTime);
  48.     } else {
  49.       return this.stopTime - this.startTime;
  50.     }
  51.   }
  52.   public String toString() {
  53.     return getTimeString();
  54.   }
  55.   /**
  56.    * 取得String类型的时间差
  57.    * 形式为小时,分钟,秒和毫秒
  58.    */
  59.   public String getTimeString() {
  60.     int hours, minutes, seconds,milliseconds;
  61.     long time = getTime();
  62.     hours = (int) (time / AN_HOUR);
  63.     time = time - (hours *AN_HOUR);
  64.     minutes = (int) (time /A_MINUTE);
  65.     time = time - (minutes *A_MINUTE);
  66.     seconds = (int) (time / 1000);
  67.     time = time - (seconds * 1000);
  68.     milliseconds = (int) time;
  69.     return hours + "h:" +minutes + "m:"
  70.      + seconds + "s:" + milliseconds +
  71.   }


  与大块的代码相比,它是非常简单的。但是它可重用而毫不复杂。因此StopWatch类的使用也是非常简单的:

  1. StopWatch obj = new StopWatch();
  2. obj.start();
  3. try{
  4.   Thread.currentThread().sleep(1500);
  5. }catch(InterruptedException ie) {
  6.   // ignore
  7. }
  8. obj.stop();
  9. System.out.println(obj); 

  
  我们执行了1500豪秒sleep,完全在预料之中的,StopWatch的报告为:

  0h:0m:1s:502ms 

  StopWatch不是深奥复杂的科学,但是它确实满足了常见的测量代码行间执行时间的需求。

(本文是为ZDNet翻译的系列文章之一,原文已经发表在ZDNet网站)

  --相关文章--
· J2EE全面介绍(二) (2007-04-13)
· 项目经验二则:读取war包中的文件及Ant使用中的OutOfMemoryError解决 (2007-04-13)
· 走向J2EE,漫长的道路 (2007-04-13)
· 步入J2EE架构和过程(2) (2007-04-13)
· 步入J2EE架构和过程(1) (2007-04-13)
· 方兴未艾的CORBA (2007-04-13)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接