怎么插入排序比选择排序慢这么多?
来源:2-4 插入排序法的特性
iTvX
2020-11-19 18:03:19
bobo老师,代码是从慕课git下载下来的,所以是没有问题的。
在 macOS 下的 jdk 15.1,跑出来是这样的:
在虚拟机 ubuntu 的 openjdk 8 中,跑出来是这样的:
为什么会这样呢?同样一份代码,在 jdk 15.1 下,插入排序的 random array 怎么比选择排序慢了这么多?因为试了很多次,所以应该不存在随机性
最后,把ubuntu的jdk升级到jdk 11,神奇的事情又出现了:
1回答
和 JVM 相关。
我在我的环境下测试,使用 Java 8 没有这个问题。但是使用 Java 11 确实有这个问题,如果添加上 -XX:+UseParallelOldGC 这个参数,这个问题就会得到极大的缓解。
不过因为不同的 Java 版本,JVM 的参数是不一样的,我也不是 JVM 专家,JVM 本身也不是这个课程的重点,所以我也不尝试寻找这个问题的最优解了。如果你有兴趣可以根据你使用的 Java 版本研究一下更多 JVM 的优化设置。课程的所有代码都是在 Java 8 下测试的结果。
继续加油!:)