Java性能不一致
发布时间:2020-12-15 02:03:29 所属栏目:Java 来源:网络整理
导读:我有一个用 Java编写的解释器.我试图在解释器中测试各种优化的性能结果.为此,我解析代码,然后在代码上重复运行解释器,这一直持续到我得到5次运行,这些运行的差异非常小(下面的时间为0.1秒),取平均值并打印.解释器中没有I / O或随机性.如果我再次运行解释器,
我有一个用
Java编写的解释器.我试图在解释器中测试各种优化的性能结果.为此,我解析代码,然后在代码上重复运行解释器,这一直持续到我得到5次运行,这些运行的差异非常小(下面的时间为0.1秒),取平均值并打印.解释器中没有I / O或随机性.如果我再次运行解释器,我会得到不同的运行时间:
91.8s 95.7s 93.8s 97.6s 94.6s 94.6s 107.4s 我试图无法使用服务器和客户端VM,串行和并行gc,大型表和窗口以及linux.这些是在1.6.0_14 JVM上.计算机没有在后台运行的进程.所以我问可能导致这些大变化的原因是什么,或者我怎么能找出它是什么? 由于程序必须迭代到固定点解决方案并且值存储在散列集中,因此导致实际问题.运行之间的散列值不同,导致不同的排序,这反过来导致达到解决方案所需的迭代量的变化. 解决方法
“挂钟时间”很少是基准测试的良好衡量标准.现代操作系统极不可能“[没有在后台运行进程” – – 众所周知,它可能是将脏块缓冲区写入磁盘,因为它决定没有其他争用.
相反,我建议使用ThreadMXBean来跟踪实际的CPU消耗. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |