gpt4 book ai didi

Java 性能不一致

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:52 24 4
gpt4 key购买 nike

我有一个用 Java 编写的解释器。我正在尝试测试解释器中各种优化的性能结果。为此,我解析代码,然后在代码上重复运行解释器,这一直持续到我得到 5 次运行,它们之间的差异非常小(以下时间为 0.1 秒),取平均值并打印。解释器中不会发生 I/O 或随机性。如果我再次运行解释器,我会得到不同的运行时间:

91.8s
95.7s
93.8s
97.6s
94.6s
94.6s
107.4s

我尝试了服务器和客户端 VM、串行和并行 gc、大表和 windows 以及 linux 都无济于事。这些在 1.6.0_14 JVM 上。计算机没有在后台运行的进程。所以我想知道是什么导致了这些巨大的变化,或者我怎样才能找出是什么?


实际问题是因为程序必须迭代到定点解决方案并且值存储在哈希集中。不同运行的散列值不同,导致不同的排序,进而导致达到解决方案所需的迭代次数发生变化。

最佳答案

“挂钟时间”很少是衡量基准的好方法。现代操作系统极不可能“[没有]任何进程在后台运行”——如您所知,它可能会将脏 block 缓冲区写入磁盘,因为它决定不存在其他争用。

相反,我建议使用 ThreadMXBean跟踪实际 CPU 消耗。

关于Java 性能不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com