StopWatch计算计时工具类

转载 2016年06月01日 12:04:43
/**
 * 秒表类,用于计算执行时间
 * 注意该类是非线程安全的
 * @author jxqlovejava
 *
 */
public class StopWatch {
    
    private static final String DEFAULT_TASK_NAME = "defaultTask";
    private String taskName;
    private long start, end;
    private boolean hasStarted, hasEnded;
    
    // 时间单位枚举:毫秒、秒和分钟
    public enum TimeUnit { MILLI, SECOND, MINUTE  }
    
    public StopWatch() {
        this(DEFAULT_TASK_NAME);
    }
    
    public StopWatch(String taskName) {
        this.taskName = StringUtil.isEmpty(taskName) ? DEFAULT_TASK_NAME : taskName;
    }
    
    public void start() {
        start = System.currentTimeMillis();
        hasStarted = true;
    }
    
    public void end() {
        if(!hasStarted) {
            throw new IllegalOperationException("调用StopWatch的end()方法之前请先调用start()方法");
        }
        end = System.currentTimeMillis();
        hasEnded = true;
    }
    
    public void clear() {
        this.start = 0;
        this.end = 0;
        
        this.hasStarted = false;
        this.hasEnded = false;
    }
    
    /**
     * 获取总耗时,单位为毫秒
     * @return 消耗的时间,单位为毫秒
     */
    public long getEclapsedMillis() {
        if(!hasEnded) {
            throw new IllegalOperationException("请先调用end()方法");
        }
        
        return (end-start);
    }
    
    /**
     * 获取总耗时,单位为秒
     * @return 消耗的时间,单位为秒
     */
    public long getElapsedSeconds() {
        return this.getEclapsedMillis() / 1000;
    }
    
    /**
     * 获取总耗时,单位为分钟
     * @return 消耗的时间,单位为分钟
     */
    public long getElapsedMinutes() {
        return this.getEclapsedMillis() / (1000*60);
    }
    
    public void setTaskName(String taskName) {
        this.taskName = StringUtil.isEmpty(taskName) ? DEFAULT_TASK_NAME : taskName;
    }
    
    public String getTaskName() {
        return this.taskName;
    }
    
    /**
     * 输出任务耗时情况,单位默认为毫秒
     */
    public void printEclapseDetail() {
        this.printEclapseDetail(TimeUnit.MILLI);
    }
    
    /**
     * 输出任务耗时情况,可以指定毫秒、秒和分钟三种时间单位
     * @param timeUnit 时间单位
     */
    public void printEclapseDetail(TimeUnit timeUnit) {
        switch(timeUnit) {
        case MILLI:
            System.out.println(this.getTaskName() + "任务耗时(毫秒):" + this.getEclapsedMillis());
            break;
        case SECOND:
            System.out.println(this.getTaskName() + "任务耗时(秒):" + this.getElapsedSeconds());
            break;
        case MINUTE:
            System.out.println(this.getTaskName() + "任务耗时(分钟):" + this.getElapsedMinutes());
            break;
        default:
            System.out.println(this.getTaskName() + "任务耗时(毫秒):" + this.getEclapsedMillis());
        }
    }

}

测量程序运行耗时多少(秒表)Stopwatch类

private void button6_Click(object sender, EventArgs e) { //测量一下从1累加到1010000000用时...
  • Fanbin168
  • Fanbin168
  • 2014年03月16日 16:22
  • 1569

使用Stopwatch计算程序运行的时间

有时候我们想知道一个代码段,或一个方法执行的时间。一般的做法是在开始执行前创建一个DateTime变量记录当前的时间,然后在执行结束后面在创建一个DateTime变量记录当前时间。这样把中两个时间一减...
  • Chinese521
  • Chinese521
  • 2014年08月04日 17:44
  • 582

StopWatch计时器(java小工具)

打印每个任务执行时间,以及占总时间百分比 package com.common.suanfa; import java.lang.reflect.InvocationTargetExcepti...
  • qq_29842929
  • qq_29842929
  • 2016年12月06日 16:51
  • 2484

StopWatch计算计时工具类

/** * 秒表类,用于计算执行时间 * 注意该类是非线程安全的 * @author jxqlovejava * */ public class StopWatch { p...
  • HUXU981598436
  • HUXU981598436
  • 2016年06月01日 12:04
  • 326

C# 中用stopwatch测试代码运行时间及递归比较

在C#中有一个秒表类:stopwatch,用这个类可以方便的测试一下代码运行时间。要使用stopwatch要先加一个命名空间,System.Diagnostics。具体用法如下: using Syst...
  • luoxq111
  • luoxq111
  • 2016年07月17日 13:30
  • 322

Spring中的计时器StopWatch

1 概述 需要记录每个任务执行时间,或者记录一段代码执行时间,简单方法是打印当前时间与执行完时间的差值,若执行大量测试很麻烦并且不直观。若想对执行时间做进一步控制,则需要在程序中很多地方修改。spri...
  • woshixuye
  • woshixuye
  • 2017年02月12日 11:58
  • 2126

StopWatch工具类

StopWatch工具类用法
  • adam_zs
  • adam_zs
  • 2017年06月08日 11:08
  • 215

Stopwatch计时器、秒表 C#

.NET2.0也提供了这样一个秒表:Stopwatch类,它可以比较精确地测量时间。 速度测试: 软件的性能和可测性是一个复杂的主题。要确保应用程序能够满足用户的期望,就需要在开发周期内考虑它的...
  • weizhiai12
  • weizhiai12
  • 2011年12月09日 11:24
  • 3212

C#:Dictionary<key,key>的Clear到底有多多块

有时我们希望复用一个Dictionary的时候,可以Clear()也可以,直接new一个新的对象, 两者到底是哪个划算呢? 我们看程序: private void Experiment() ...
  • chenhuijie666
  • chenhuijie666
  • 2013年12月02日 14:30
  • 1426

Stopwatch计时

System.Diagnostics.Stopwatch sw = new Stopwatch();                 sw.Start();                 代码 ...
  • kkxxllasasas
  • kkxxllasasas
  • 2011年02月24日 11:41
  • 157
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:StopWatch计算计时工具类
举报原因:
原因补充:

(最多只允许输入30个字)