StopWatch翻译过来的意思就是秒表,其作用也就像我们平时使用的秒一样。spring中就有提供这个工具类(org.springframework.util.StopWatch)。

  日常开发中,经常需要看方法各部分的耗时,通常的做法就是通过插桩的方式来统计耗时,如下:

     long startTime = System.currentTimeMillis();
Thread.sleep(1000);
long finishTime = System.currentTimeMillis();
System.out.println("请求耗时:" + (finishTime - startTime));

  如果有多个就要重复写多个,比较繁琐,这个时候就可以用StopWatch工具类。如下:

     StopWatch sw = new StopWatch();

     sw.start("校验耗时");
Thread.sleep(1000);
sw.stop(); sw.start("组装报文耗时");
Thread.sleep(2000);
sw.stop(); sw.start("请求耗时");
Thread.sleep(1000);
sw.stop(); System.out.println(sw.prettyPrint());
System.out.println(sw.getTotalTimeMillis());

  即使需要加多个位置,也很方便,用prettyPrint方法,可以带格式自动输出各个任务的情况,如下:

  StopWatch还有一些其他的方法可以使用:

prettyPrint:用自带格式输出所有任务信息。

getTaskInfo:获取所有任务的信息,即各个任务的名称和耗时。(如果想自定义输出一些内容,或者格式,可以从这里获取所有任务的信息)

getTotalTimeMillis:获取任务总耗时(毫秒)。

getTotalTimeSeconds:获取任务总耗时(秒)。

getTaskCount:获取任务总数。

getLastTaskName:获取最后一个任务的名称。

getLastTaskTimeMillis:获取最后一个任务的耗时(毫秒)。

getLastTaskInfo:获取最后一个任务的信息,即任务的名称和耗时。

JAVA中用StopWatch计算代码耗时的方法的更多相关文章

  1. 常用的代码之一:用StopWatch计算代码运行花费的时间。

    先引用Diagnostics using System.Diagnostics; 然后: Stopwatch stopWatch = new Stopwatch(); stopWatch.Start( ...

  2. Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数【转】

    Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数[转] 标签: javajvm监控工具性能优化 2015-04-07 16:47 1846人阅读 评论(0)  ...

  3. 折叠代码块 C#中用 #region和#endregion java中用 //region和//endregion

    折叠代码块 C#中用 #region和#endregion   java中用 //region和//endregion

  4. 为什么在 Java 中用 (low+high)>>>1 代替 (low+high)/2 或 (low+high)>>1 来计算平均值呢?好在哪里?

    >>>与>>是位运算符,只对整型有效(不能用于浮点型).当是整型的时候(low+high)>>1可以代替(low+high)/2.>>>是无 ...

  5. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  6. Java编写高质量代码改善程序的151个建议

    第一章  Java开发中通用的方法和准则 建议1:不要在常量和变量中出现易混淆的字母: (i.l.1:o.0等). 建议2:莫让常量蜕变成变量: (代码运行工程中不要改变常量值). 建议3:三元操作符 ...

  7. Java中异常发生时代码执行流程

    异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员) ...

  8. Java 底层机制(JVM/堆/栈/方法区/GC/类加载)

    转载:https://www.jianshu.com/p/ae97b692614e?from=timeline JVM体系结构 JVM是一种解释执行class文件的规范技术.   JVM体系结构 我翻 ...

  9. (转载)JAVA动态编译--字节代码的操纵

    在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...

随机推荐

  1. MATLAB 下GUI的学习

    做界面,然后在对应程序里做调用. 0.打开文件:命令行输入 guide 或者 新建——图形用户界面1.文件-预设可以对字体.代码等进行设置.2.工具-GUI选项可以改变行为大小. 3,添加轴,面板,按 ...

  2. nameof 运算符

    0. 目录 C#6 新增特性目录 1. 老版本的代码 1 using System; 2 namespace csharp6 3 { 4 internal class Program 5 { 6 pr ...

  3. [转]etcdctl v2 v3 使用指南

    原文:https://blog.csdn.net/kozazyh/article/details/79586530 ------------------------------------------ ...

  4. KVM管理工具

    Ovirt:功能强大,RHEV的开源版本 WebVirtMgr:virt-manager的WEB模式的替代品 ConVirt:分为开源版.商业版 Openstack:开源框架,复杂程度较高

  5. F Energy stones

    题意是,有$n$个石头,每个石头有初始能量$E_i$,每秒能量增长$L_i$,以及能量上限$C_i$,有$m$个收能量的时间点,每次把区间$\left[S_i, T_i\right]$石头的能量都给收 ...

  6. 开源项目(7)Opencv日常之Homography

    参考教程 https://blog.csdn.net/liuphahaha/article/details/50719275 什么是Homography 在图1中有两张书的平面图,两张图分别有四个相对 ...

  7. Vuejs模板绑定

    一.Vue实例 ①el:指定被Vue管理的模板入口,网页中的DOM节点,但是不能使用body和html,必须是一个普通的HTML标签节点,一般是div ②data:数据驱动视图的数据,在data中初始 ...

  8. for循环的嵌套之小星星。

    for循环中如何打印出五行五列的小星星呢? 很明显行列的形式需要用到循环嵌套. 外循环控制行: var str = "" ; for(var  i= 1; i <= 5; i ...

  9. linux 配置启动supervisor详细

    参考自强学堂:https://code.ziqiangxuetang.com/django/django-nginx-deploy.html 例子中zqxt项目 安装 supervisor 软件包 ( ...

  10. 利用python爬虫爬取图片并且制作马赛克拼图

    想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =. 首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我 ...