Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
除非使用sleep(),否则在对Java代码进行基准测试时会出现巨大差异_Java_Testing_Benchmarking_Sleep_Variance - Fatal编程技术网

除非使用sleep(),否则在对Java代码进行基准测试时会出现巨大差异

除非使用sleep(),否则在对Java代码进行基准测试时会出现巨大差异,java,testing,benchmarking,sleep,variance,Java,Testing,Benchmarking,Sleep,Variance,我通过对象序列化(ObjectInputStream、ObjectOutputStream)在本地网络上对Java函数进行基准测试 在一个零负载的系统上,这给了我一个巨大的差异,结果如下: 测试1:2.23 测试2:1.58 测试3:2.08秒 在测试步骤之间使用sleep()调用可以得到更好的数字,但这当然会导致更长的测试时间 运行几十个测试是不可能的,因为这会阻塞服务器队列 我应该坚持使用sleep()解决方案,还是有更好的方法来解决这个问题?我会分析系统的性能,看看为什么需要这么长时间

我通过对象序列化(ObjectInputStream、ObjectOutputStream)在本地网络上对Java函数进行基准测试

在一个零负载的系统上,这给了我一个巨大的差异,结果如下:

  • 测试1:2.23
  • 测试2:1.58
  • 测试3:2.08秒
在测试步骤之间使用sleep()调用可以得到更好的数字,但这当然会导致更长的测试时间

运行几十个测试是不可能的,因为这会阻塞服务器队列


我应该坚持使用sleep()解决方案,还是有更好的方法来解决这个问题?

我会分析系统的性能,看看为什么需要这么长时间。这也可以解释这种变化。请尝试在客户端和服务器上运行
-verbosegc
,以查看是否因此而出现较大延迟。您是否尝试过最小睡眠(又名Thread.sleep(1))或Thread.yield()的效果?我们必须查看生成这些数字的示例线束和测试。你也没有说“问题”是什么。为什么通过
sleep()
手动添加请求时间比服务时间有差异要好?@Mark Peters:“问题”在于我们将使用测试数据来监控服务。当一个测试总是比它应该运行的时间长1秒时,这并不是一个大问题,因为测试在+-50%的运行时间之间出现峰值。@Peter Lawrey:GC的延迟实际上在0.1到0.4秒之间。正在寻找在远程测试仪中使用此数据的方法。