Java VisualVM结果不同于手动测量
我正在使用Eclipse和运行VisualVM的插件。现在VisualVM说函数的方法调用总是在180ms左右返回,而如果我使用手动方法:Java VisualVM结果不同于手动测量,java,visualvm,execution-time,Java,Visualvm,Execution Time,我正在使用Eclipse和运行VisualVM的插件。现在VisualVM说函数的方法调用总是在180ms左右返回,而如果我使用手动方法: long start = System.nanoTime(); searchConnections(bsTree, connectionList); double elapsedTimeInSec = (System.nanoTime() - start) * 1.0e-6; 我大约有50秒!为什么会有区别?那么VisualVM中的测量值是否错误?我需要一
long start = System.nanoTime();
searchConnections(bsTree, connectionList);
double elapsedTimeInSec = (System.nanoTime() - start) * 1.0e-6;
我大约有50秒!为什么会有区别?那么VisualVM中的测量值是否错误?我需要一些项目的度量,这就是为什么尽可能精确的度量非常重要。要回答您的问题,没有一种简单的方法可以知道由于JVM的性质以及JVM如何在运行时优化代码,这些值为什么会不同。更不用说System.nanotime()是一个特定于平台的实现,我不会完全相信它的价值 我更可能相信VisualVM的结果而不是内联测量,因为VisualVM实际上是在测量它。如果您关心基准测试或希望真正专注于获得准确的结果,我建议您使用类似于此任务的工具