如何在Java中度量性能
如何衡量Java应用程序中方法/时间段的性能?是否有专门为此功能创建的类?您可以使用System.currentTimeMillis()或System.nanoTime()获取要测量的代码执行前后的时间 一种更具模拟性的方法是使用或类似的应用程序来生成许多执行的统计数据如何在Java中度量性能,java,Java,如何衡量Java应用程序中方法/时间段的性能?是否有专门为此功能创建的类?您可以使用System.currentTimeMillis()或System.nanoTime()获取要测量的代码执行前后的时间 一种更具模拟性的方法是使用或类似的应用程序来生成许多执行的统计数据 一种更具实用性的方法是使用。在Java8中,有一个新的工具用于此,请看 JMH是一种Java工具,用于构建、运行和分析用Java和其他针对JVM的语言编写的nano/micro/mili/macro基准测试 我用的是这个,而且它
一种更具实用性的方法是使用。在Java8中,有一个新的工具用于此,请看 JMH是一种Java工具,用于构建、运行和分析用Java和其他针对JVM的语言编写的nano/micro/mili/macro基准测试 我用的是这个,而且它很震撼。它包装在DropWizard中,非常好。还可以选择profiler->yourKit或JMC(免费Java任务控制) 关键是评测时要轻量级。你不想给等式增加太多的偏差。有两种方法:
- 在设计时进行测试。这意味着您将在设计应用程序时执行测试。您可能会尝试创建一些方法,并通过使用
(或者,在最坏的情况下,System.nanoTime()
)天真地对它们进行测量,这是一种天真的方法,因为您缺少很多处理微基准的概念。不过,如果您想手动对方法进行基准测试,至少要遵循以下步骤。在我看来,你不应该重新发明轮子,而应该使用一个基准框架,比如或者你可以使用单元测试来测量你的算法/方法的时间System.currentTimeMillis()
- 在运行时进行测试。这意味着您将在应用程序运行时测量性能,通常是在类似于生产环境的专用环境中。对于此场景,请使用。Java应用程序有很多探查器,从JDK发行版中提供的免费许可证和(这来自JDK 7 u40)到商业产品,如
System.nanoTime()
通常推荐使用System.currentTimeMillis()
,但这是您能得到的最具体的答案。比如秒,而不是无症状分析。您可以使用System.currentTimeMillis()为了获得代码执行前后的时间,最好使用AFAIK JMeter,它适用于基于web的应用程序,而不适用于桌面或控制台应用程序。您可以实现调用多种应用程序的侦听器。自2011年以来,Perf4j项目似乎已被放弃。。。