首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中对方法执行时间进行基准测试?

如何在java中对方法执行时间进行基准测试?
EN

Stack Overflow用户
提问于 2010-03-31 21:37:58
回答 10查看 42.2K关注 0票数 50

我有一个我自己用java编写的程序,但我想测试方法的执行时间,并获得特定方法的时间。我想知道这是否可能,通过某种方式的eclipse插件?或者可能会插入一些代码?

我明白了,这是一个相当小的程序,最多不超过1500行,最好是专用工具或System.currentTimeMillis()

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-03-31 21:43:23

除了使用分析器之外,以下是获取所需内容的简单方法:

代码语言:javascript
复制
public class SomeClass{
   public void somePublicMethod()
   {
       long startTime = System.currentTimeMillis();
       someMethodWhichYouWantToProfile();
       long endTime = System.currentTimeMillis();
       System.out.println("Total execution time: " + (endTime-startTime) + "ms"); 
   }
 }
票数 51
EN

Stack Overflow用户

发布于 2015-12-03 23:15:45

如果瓶颈大到足以用分析器观察到,那么就使用分析器。

如果您需要更高的准确性,测量一小段代码的最好方法是使用Java微基准测试框架,如OpenJDK's JMHGoogle's Caliper。我相信它们和JUnit一样简单易用,不仅你会得到更准确的结果,而且你还会从社区获得专业知识来做正确的事情。

遵循JMH微基准测试来测量Math.log()的执行时间

代码语言:javascript
复制
private double x = Math.PI;

@Benchmark
public void myBenchmark() {
    return Math.log(x)
}

使用currentMillis()nanoTime()进行测量有许多限制:

它们有延迟(它们也需要时间来执行),这使得你的measurements.

  • They有非常有限的精度,这意味着你可以测量从26 is到26 is的东西,在linux和300左右的视窗已经描述了here

  • The预热阶段没有被考虑,使你的测量波动很大。

Java中的currentMillis()nanoTime()方法可以很有用,但必须与EXTREME CAUTION一起使用,否则您可能会得到错误的测量误差like this,其中测量代码的顺序会影响测量结果;或者like this,其中作者错误地得出结论,数百万次操作在不到一毫秒的时间内执行,而实际上JMV没有实现任何操作,并挂起了代码,根本不运行代码。

这里有一个精彩的视频,解释了如何以正确的方式进行微基准测试:https://shipilev.net/#benchmarking

票数 30
EN

Stack Overflow用户

发布于 2015-12-03 23:32:50

对于快速和肮脏的时间测量测试,不要使用挂钟时间(System.currentTimeMillis())。更喜欢System.nanoTime()

代码语言:javascript
复制
public static void main(String... ignored) throws InterruptedException {
    final long then = System.nanoTime();
    TimeUnit.SECONDS.sleep(1);
    final long millis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - then);
    System.out.println("Slept for (ms): " + millis); // = something around 1000.
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2553347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档