介   绍:

    StopWatch 是用来计算程序块的执行时间工具, 目前有好多框架都有实现提供此工具(实现结果都区别不大), 本文介绍org.springframework.util.StopWatch

应用背景:

     在开发过程中,有时候我们需要判断程序的执行时间来定位是哪个模块的执行效率比较低;例如: 有一个方法在处理计算结果时,返回的时间很长,这个时候就需要判断这个方法中的哪一段代码执行时间比较长,就可以使用StopWatch工具来计算时间,从而更好的定位问题;

demo :

    

public static void demo2() throws Exception{

        //构建StopWatch实例
org.springframework.util.StopWatch stopWatch = new org.springframework.util.StopWatch(); //开始第一个计时任务, start(taskName) ---> taskName指任务名称
stopWatch.start("第一个计时任务----for循环执行时间");
for(int i = 0; i < 100000; i++){
for(int j = 0; j < 1000000; j++){
}
}
//计算for循环执行的时间,需要调用stop()方法停止计时
stopWatch.stop(); //第二个计时任务
stopWatch.start("第二个计时任务----休眠2S");
Thread.sleep(2000);
stopWatch.stop(); //...... //得到所有任务的计时结果
String prettyPrint = stopWatch.prettyPrint(); System.out.println(prettyPrint); }

执行结果:

StopWatch任务计时器的更多相关文章

  1. Stopwatch 类

    Stopwatch 为计时器的实现. 主要属性方法 属性和方法 说明 static GetTimestamp() 如果Stopwatch使用高分辨率的性能计数器,则返回该计数器的当前值:如果Stopw ...

  2. Spring AOP 本质(4)

    这一主要看看Spring AOP是如何实现通知包围的.   Spring AOP包围通知在功能上和前置通知加后置通知类似,但还是有区别的:包围通知可以修改返回值,还可以阻止.替换目标方法的执行.   ...

  3. 高级软件工程第三次作业 赵坤&黄亦薇

    0.小组成员 赵坤2017282110261 黄亦薇201728210260 1.项目Github地址  https://github.com/zkself/homework3 PS:建议使用chro ...

  4. 【附4】springboot源码解析-run()

    public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); / ...

  5. 附4 springboot源码解析-run()

    public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); / ...

  6. 异步和多线程,委托异步调用,Thread,ThreadPool,Task,Parallel,CancellationTokenSource

    1 进程-线程-多线程,同步和异步2 异步使用和回调3 异步参数4 异步等待5 异步返回值 5 多线程的特点:不卡主线程.速度快.无序性7 thread:线程等待,回调,前台线程/后台线程, 8 th ...

  7. 02 C#高级

    第九天 面向过程--à面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 把大象塞进冰箱 1. 打开冰箱门 2. 把大象塞进去,亲下大象的屁股 3. 关闭冰箱门 孙全 瘦小 ...

  8. SpringBoot深入理解

    SpringBoot深入理解 项目打包SpringBoot启动过程 当使用打包时,会下载org-springframework-boot-loader的jar,并且不会放在lib存放的第三方jar包文 ...

  9. Abp 审计模块源码解读

    Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客 ...

随机推荐

  1. 字符串的格式化、运算符和math函数(python中)

    一.字符串的格式化 1.字符串格式化输出 print('%s的年龄是%d' % ('小哥哥',20)) # 将每个值放在⼀个圆括号内,逗号隔开 '{0}的年龄是{1}'.format('⼩小哥哥',2 ...

  2. chsime.exe cpu占用高

    打开管理员的命令提示符,运行 if exist "%SystemRoot%\System32\InputMethod\CHS\ChsIME.exe" (takeown /f &qu ...

  3. Django REST Framework之权限组件

    权限控制是如何实现的? 一般来说,先有认证才有权限,也就是用户登录后才能判断其权限,未登录用户给他一个默认权限. Django接收到一个请求,首先经过权限的检查,如果通过检查,拥有访问的权限,则予以放 ...

  4. Spring 梳理 - filter、interceptor、aop实现与区别 -第二篇

    spring mvc中的Interceptor可以理解为是Spring MVC框架对AOP的一种实现方式.一般简单的功能又是通用的,每个请求都要去处理的,比如判断token是否失效可以使用spring ...

  5. xampp修改mysql 启动脚本

    打开xmapp,点击mysql对应的config按钮进入my.ini文件,如图所示: 修改mysqld服务的port参数3306为你想要设置的port,如图2所示: 重新启动mysql服务即可用客户端 ...

  6. 前端防止url输入地址直接访问页面

    首先,解决这个问题要搞明白此url是从程序内部跳转还是直接在地址栏输入的,如果是程序内部跳转,那就好办啦.方法如下: 判断用户是否登录状态,是否携带token 使用router.beforeEach注 ...

  7. IDEA 学习笔记之 Console显示日志大小

    Console显示日志大小: IntelliJ IDEA默认的Output输出缓存区大小只有1024KB,超过大小限制的就会被清除,而且还会显示[too much output to process] ...

  8. electron教程(四): 使用electron-builder或electron-packager将项目打包为可执行桌面程序(.exe)

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 子进程管理 electron教程(三): ...

  9. FFmpeg(二) 解封装相关函数理解

    一.解封装基本流程 ①av_register_All()////初始化解封装,注册解析和封装的格式. ②avformat_netword_init()//初始化网络,解析rtsp协议 ③avforma ...

  10. IDEA统一注释格式(干货)

    统一注释格式: Idea自动生成注释: /** *@author 你的名字的简写 *@date ${DATE}${TIME} 在每个功能上添加注释,例子如下: 我在Mapper文件中添加了自己书写的S ...