【问题标题】:VisualVM results differ from manual measurementsVisualVM 结果不同于手动测量
【发布时间】:2013-03-10 11:51:47
【问题描述】:

我正在使用带有插件的 Eclipse 来运行 VisualVM。现在 VisualVM 说函数的方法调用总是在 180 毫秒左右返回,而如果我使用手动方法:

long start = System.nanoTime();
searchConnections(bsTree, connectionList);
double elapsedTimeInSec = (System.nanoTime() - start) * 1.0e-6;

我得到大约 50 毫秒!为什么有区别?那么 VisualVM 中的测量值是否错误?我需要对某些项目进行测量,这就是为什么尽可能精确地测量它们很重要。

【问题讨论】:

    标签: java visualvm execution-time


    【解决方案1】:

    要回答您的问题,由于 JVM 的性质以及它将如何在运行时优化代码,没有一种简单的方法可以知道为什么这些值会完全不同。更不用说 System.nanotime() 是一个特定于平台的实现,我不会完全相信它的价值是否准确。

    我更有可能相信 VisualVM 的结果而不是内联测量,因为 VisualVM 实际上正在测量它。如果您关心基准测试或想真正专注于获得准确的结果,我建议您使用 Caliper 之类的工具来完成此任务。

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2017-04-20
      • 2015-09-23
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多