我有一个用Java编写的解释器。我试图在解释器中测试各种优化的性能结果。要做到这一点,我解析代码,然后重复运行代码翻译,直到我得到5个运行,它们有一个很小的差距(在下面的时间0.1s),平均值被采取并打印。口译员不会出现I/O或随机性。如果我再次运行解释我得到不同的行进时间:Java性能不一致
91.8s
95.7s
93.8s
97.6s
94.6s
94.6s
107.4s
我试图无济于事服务器和客户端虚拟机中,串行和并行GC,大表和Windows和Linux。这些是在1.6.0_14 JVM上。计算机没有进程在后台运行。所以我问什么可能会导致这些大的变化,或者我怎么能找出什么是?
实际的问题是由于程序必须迭代到固定点解决方案并将值存储在哈希集中导致的。散列值在运行之间不同,导致不同的排序,从而导致达到解决方案所需的迭代次数发生变化。
堆设置为-Xms1024M -Xmx1024M。 – Molehill 2009-06-23 18:30:55
你试过了什么? – akf 2009-06-23 18:32:47