【第22期】观点:IT 行业加班,到底有没有价值?

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());
        }
    }

}

举报

相关文章推荐

C++中两种常用的记录程序运行时间的方法的总结

本篇博客对C++中常用的记录程序运行时间的方法进行简单的总结。

StopWatch

为了判分,写了一段简易的代码,后来修改的时候发现原系统中自带这段代码,看着别人写的代码,觉得别人写的比自己的简洁多了,想着怎么人家就能把代码写的那么简洁,那么效率高.想到曹建新提过,什么测试代码的运行...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Stopwatch工具类

现在我的一部分工作就是优化客户端的性能,比如优化列表快速滑动卡顿现象。 一个很好的办法就是使用DDMS的Method Profiling功能,它可以生成一个表格来显示app中所有执行的方法的...

C/C++高精度计时器类

http://www.cnblogs.com/mfryf/archive/2012/02/13/2349360.html

Qt学习之秒表的实现(StopWatch)

秒表对于我来说并不moshen

.net中StopWatch的计算时间频率的问题!

今天为了测试算法性能,在C++下实现了一个类似.net StopWatch类的一个类。为了看.net是怎么做的,就把.net的StopWatch 类的源码反编译出来看了下。 虽然最后我成功实现了C++...

时间测量之StopWatch

时间测量之StopWatch用来度量时间 DataTime StopWatch DataTime 开始和结尾的时候各一个DataTime.Now(),获取当前系统时间,然后相减来测量。 StopWa...

C++中两种常用的记录程序运行时间的方法的总结

关于C++中计算时间的一些总结 方法一:clock()计时函数 clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: ...

c++多态性原理及应用 & c++以及cuda 计时技术小结

关于c++多态性的应用,之前曾经看到过侯俊杰的《深入浅出MFC》,结合上面提到过一些关于多态性的用法与今天看到的一些代码,做一个简单的总结: 1.      既然子类和父类(抽象类)实现了同样的方法...

Java之代码优化

1. 时间优化 1.1 标准代码优化 a. 将循环不变量的计算移出循环     我写了一个测试例子如下: import util.StopWatch; /** * 循环...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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