【问题标题】:Measuring execution time for a Java doesn't work测量 Java 的执行时间不起作用
【发布时间】:2012-10-21 17:54:33
【问题描述】:

我正在寻找测量 java 中具体方法的执行时间。更准确地说,我实现了 System.nanoTime() 方法而不是 System.currentTimeMillis():

long startTime = System.nanoTime(); 
ServerRequestState state = (ServerRequestState) search.getGoalState();
long endTime = System.nanoTime();               
long elapsedTime = (endTime - startTime) / 1000000; // time in ms

但这对我不起作用,方法在 30 到 40 秒后运行,但变量 elapsedTime 的结果显示仅为 4 毫秒,在某些情况下为 1 毫秒。

任何想法为什么这不起作用?

【问题讨论】:

    标签: java


    【解决方案1】:

    1 毫秒 == 1,000,000 纳秒。

    我会推荐使用 Guava 的 Stopwatch 来做你正在做的事情。

    【讨论】:

    • 我在复制代码时做了一个勘误表。谢谢推荐。
    • 那么您可能没有测量实际花费这 30 到 40 秒的时间。将search.getGoalState() 的调用替换为Thread.sleep(30000L),您会看到您的代码测量的经过时间是30000 毫秒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2016-09-13
    • 2021-04-26
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多