stopwatch_在Java中衡量执行时间– Spring StopWatch示例

stopwatch

两种方法可以通过使用System.currentTimeinMillis()或使用System.nanoTime() 来测量Java中经过的执行时间 。 这两个方法可用于测量 Java中两个方法调用或事件之间的经过时间或执行时间计算经过的时间是Java程序员查明方法执行需要多少秒或毫秒或特定代码块需要花费多少时间的第一件事。 大多数Java程序员从一开始就熟悉System.currentTimeInMillis(),而Java 1.5引入了新版本的更精确的时间测量实用程序System.nanoTime,以及诸如Generics , Enum类型 ,auto等语言的一些新功能。装箱和可变参数或可变参数 。 您可以使用它们中的任何一个来衡量Java中方法的执行时间。 尽管最好使用System.nanoTime()来更精确地测量时间间隔。
在本Java编程教程中,我们将看到一个简单的Java程序,它通过使用System.nanoTime()和Spring框架的StopWatch实用工具类来测量执行时间。 本文是我继续发布有关涵盖Java基本概念(例如, 如何在Java中比较String , 如何正确地在Java中编写equals方法以及在Java 中循环HashMap的4种 方法)的文章的延续。 如果您还没有阅读它们,您可能会发现它们很有用。

衡量Java执行时间的Java程序示例

这是一个使用System.nanoTime 测量两个代码块之间的经过时间代码示例,在任何开放源代码Java库(如Apache commons lang,Google commons和Spring)中,还提供了StopWatch实用程序类,可用于测量Java的经过时间 。 StopWatch提高了可读性,以在计算经过的执行时间时最大程度地减少了计算错误,但是请注意StopWatch不是线程安全的 ,不应在多线程环境中共享,并且它的文档明确指出,它更适合用于基本性能评估的开发和测试环境在生产环境中执行时间计算。
import org.springframework.util.StopWatch;/*** Simple Java Program to measure elapsed execution time in Java* This Java Program shows two ways for measuring time in Java, by using System.nanoTime() which was* added in Java 5 and StopWatch which is a utility class from Spring Framework.*/
public class MeasureTimeExampleJava {public static void main(String args[]) {//measuring elapsed time using System.nanoTimelong startTime = System.nanoTime();for(int i=0; i < 1000000; i++){Object obj = new Object();}long elapsedTime = System.nanoTime() - startTime;System.out.println("Total execution time to create 1000K objects in Java in millis: "+ elapsedTime/1000000);//measuring elapsed time using Spring StopWatchStopWatch watch = new StopWatch();watch.start();for(int i=0; i < 1000000; i++){Object obj = new Object();}watch.stop();System.out.println("Total execution time to create 1000K objects in Java using StopWatch in millis: "+ watch.getTotalTimeMillis());}  }Output:
Total execution time to create 1000K objects in Java in millis: 18
Total execution time to create 1000K objects in Java using StopWatch in millis: 15
您应该使用哪一个来衡量Java中的执行时间
如果您使用的是JDK 1.5以下版本,则取决于可用的选项,而System.currentTimeInMillis()在可用性方面是最佳选择,而在JDK 1.5之后,nanoTime可以更好地测量经过时间,因为它更准确并且使用精确的系统时钟并可以测量高达纳秒的精度 。 虽然如果您使用的是上述Java开源库中的任何一个,大多数情况下Spring比StopWatch也是更好的选择,但是正如我之前所说, StopWatch 不是线程安全的 ,仅应在开发和测试环境中使用。 就像SimpleDateFormat不是线程安全的一样 ,您可以使用ThreadLocal创建每个线程的SimpleDateFormat,您也可以使用StopWatch进行相同的操作。 但是我不认为StopWatch是像SimpleDateFormat这样的重对象。
这就是如何测量Java的经过时间或执行时间的全部内容。 使自己养成测量重要代码的性能和执行时间的习惯,尤其是在大多数时间执行的方法或循环。 在那些地方,对代码进行小的优化就可以提高性能。
参考: 如何在Java中测量经过的执行时间– StopWatch示例,来自JCG合作伙伴 Javin Paul,来自Javarevisited博客。

翻译自: https://www.javacodegeeks.com/2012/08/measure-execution-time-in-java-spring.html

stopwatch

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle客户端中文乱码问题的解决

1 查看服务器端编码 select userenv(language) from dual; 我实际查看到的结果为&#xff1a; USERENV(LANGUAGE) ----------------------------- AMERICAN_AMERICA.ZHS16GBK 2 执行语句 select * from V$NLS_PARAMETERS; 查看第一行PARAMETER项中为NLS_LANGUAGE对应的VALUE项…

avi文件格式详解

avi文件格式详解 AVI是音频视频交错(Audio Video Interleaved)的英文缩写&#xff0c;它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式&#xff0c;原先用于Microsoft Video for Windows (简称VFW)环境&#xff0c;现在已被Windows 95/98、OS/2等多数操作…

许多参数和丢失的信息

代码越少越好&#xff1f; 对象越少越好&#xff1f; 是真的吗 像往常一样&#xff0c;这取决于。 在某些情况下&#xff0c;通过添加更多内容&#xff0c;我们会添加不必要的复杂性。 当我们仅出于“将来可能需要这种额外的灵活性”而创建接口或其他抽象时&#xff0c;就会发…

并发编程---线程queue---进程池线程池---异部调用(回调机制)

线程 队列&#xff1a;先进先出堆栈&#xff1a;后进先出优先级&#xff1a;数字越小优先级越大&#xff0c;越先输出import queueq queue.Queue(3) # 先进先出-->队列q.put(first) q.put(2) # q.put(third) # q.put(4) #由于没有人取走&#xff0c;就会卡主 q.put(4,block…

avi编码格式以及查看的视频编码方式的小工具

avi编码格式以及查看的视频编码方式的小工具 2009-06-06 17:55:47| 分类&#xff1a; 默认分类 | 标签&#xff1a; |字号大中小 订阅 首先要说明的是&#xff0c;文件后缀名为avi的文件不一定使用的编码方式就是一样的&#xff0c;所以才写下来&#xff0c;以备以后查阅…

SQL Server遗失管理权限账号密码怎么办?

假如一个SQL Server实例只允许“SQL身份认证”模式登录数据库&#xff0c;而糟糕的是你忘记了sa的密码&#xff08;sa出于安全考虑应该被禁用&#xff0c;这里仅仅为了描述问题&#xff09;或其它具有sysadmin角色的登录名的密码&#xff1f;个人就遇到这样一个案例&#xff0c…

MFC 定时器使用方式

MFC 定时器使用方式 2011-04-30 12:24:58| 分类&#xff1a; 默认分类 | 标签&#xff1a; |字号大中小 订阅 用SetTimer函数 创建定时器 参数1表示定时器的ID&#xff0c;参数2表示时间间隔&#xff0c;最后一个参数是处理的函数&#xff0c;如果填NULL表示&#xff0…

js循环获取table中的值

<script type"text/javascript">function getTdValue() {var tableId document.getElementById("tab");var str "";//获取table中的某一列的值for (var i 1; i < tableId.rows.length; i) {alert(tableId.rows[i].cells[3].innerHTM…

MFC中Radio Button使用方法

MFC中Radio Button使用方法2012-04-19 09:44:22 我来说两句 收藏 我要投稿 先为对话框加上2个radio button&#xff0c;分别是Radio1和Radio2。 问题1&#xff1a;如何让Radio1或者Radio2默认选上&#xff1f;如何知道哪个被选上了&#xff1f; 关键是选上&#x…

使用不可变对象创建值对象

在回答我最近的文章中AutoValue&#xff1a;生成的不可变的值类 &#xff0c; 布兰登认为&#xff0c;这可能是有趣的&#xff0c;看看如何AutoValue比较项目Lombok和Immutables和凯文借调这一点。 我同意这是一个好主意&#xff0c;但是我首先将这篇文章发布为Immutables的简要…

css3 transform实现水平和垂直居中

代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible…

ubuntu vnc 远程连接桌面

ubuntu vnc 远程连接桌面 2011-05-18 10:30:48 分类&#xff1a; LINUX 一、WindowsXP远程连接Ubuntu的桌面 1.在WindowsXP上下载并安装RealVNC; 2.在Ubuntu中操作&#xff0c;打开 应用程序/互联网 /远程桌面查看器; 3.首先要配置一下&#xff0c;打开 系统/首选项/远程桌面&…

hkws摄像头拆机

转载于:https://www.cnblogs.com/feipeng8848/p/8961924.html

java虚拟机常用命令工具

java虚拟机常用命令工具 博客分类&#xff1a; 虚拟机 虚拟机jvmjava 一、概述 程序运行中经常会遇到各种问题&#xff0c;定位问题时通常需要综合各种信息&#xff0c;如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分…

Spring Cloud Zuul –编写过滤器

Netflix OSS项目Zuul充当后端服务的网关&#xff0c;并支持添加安全性&#xff0c;路由等边缘功能。 在Zuul世界中&#xff0c;称为Zuul过滤器的组件提供了特定的边缘功能&#xff0c;为基于Spring Cloud的项目编写这种过滤器非常简单。 此处提供了添加过滤器的良好参考。 在这…

嵌入式基础篇 - 第2章 Systick系统定时器

2.1 STM32 的时钟系统 STM32 芯片为了实现低功耗&#xff0c;设计了一个功能完善但却非常复杂的时钟系统。普通的MCU 一般只要配置好 GPIO 的寄存器就可以使用了&#xff0c;但 STM32 还有一个步骤&#xff0c;就是开启外设时钟。 图2-1 STM32的时钟树在 STM32 中&#xff0c;…

kill所有java进程

kill所有java进程 ps -ef | grep java | grep -v grep |awk {print $2} | xargs -p kill -9如果不需要询问&#xff0c;把xargs后面 -p 参数去掉Aix 通过shell脚本kill杀指定进程&#xff0c;比如杀所有java进程 2012-11-16 15:31, Tags: 127人阅读----脚本杀进程-------------…

sqa计划

一、sqa计划 本计划是对“生活在长大”项目的流程规范和约定&#xff0c;本次计划包括质量保证、质量控制、数据收集和统计报告四部分。 质量保证&#xff1a; 保证项目的完整和运行&#xff0c;没有重大BUG。 计划进度 任务      时间        结果       …

正确地kill java历程

正确地kill java历程 www.MyException.Cn 发布于&#xff1a;2012-06-27 14:20:08 浏览&#xff1a;4次正确地kill java进程在linux/unix下&#xff0c;你会怎么中止一个java进程&#xff1f; 你可能会回答 kill -9 pid&#xff0c;这是一种在多数情况下正确的做法。不过&a…

并发加对象锁_通用并发对象池

并发加对象锁在本文中&#xff0c;我们将介绍如何在Java中创建对象池。 近年来&#xff0c;JVM的性能成倍增加&#xff0c;大多数类型的对象几乎都变得多余&#xff0c;从而提高了对象池的性能。 从本质上讲&#xff0c;对象的创建不再像以前那样昂贵。 但是&#xff0c;有些对…