我有一个用Java编写的解释器.我试图在解释器中测试各种优化的性能结果.为此,我解析代码,然后在代码上重复运行解释器,这一直持续到我得到5次运行,这些运行的差异非常小(下面的时间为0.1秒),取平均值并打印.解释器中没有I/O或随机性.如果我再次运行解释器,我会得到不同的运行时间:
91.8s
95.7s
93.8s
97.6s
94.6s
94.6s
107.4s
Run Code Online (Sandbox Code Playgroud)
我试图无法使用服务器和客户端VM,串行和并行gc,大型表和窗口以及linux.这些是在1.6.0_14 JVM上.计算机没有在后台运行的进程.所以我问可能导致这些大变化的原因是什么,或者我怎么能找出它是什么?
由于程序必须迭代到固定点解决方案并且值存储在散列集中,因此导致实际问题.运行之间的散列值不同,导致不同的排序,这反过来导致达到解决方案所需的迭代量的变化.