Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java VisualVM结果不同于手动测量_Java_Visualvm_Execution Time - Fatal编程技术网

Java VisualVM结果不同于手动测量

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中的测量值是否错误?我需要一

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

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

我大约有50秒!为什么会有区别?那么VisualVM中的测量值是否错误?我需要一些项目的度量,这就是为什么尽可能精确的度量非常重要。

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

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