gongdear   gongdear的技术博客

欢迎大家参观我的博客

标签: Java (13)

知乎上一个关于Java性能问题的探究 有更新!

今天在知乎上看到一个问题很有意思: // 下面一小段程序, 修改注释处所指的常数, 并不影响函数调用次数和结果, 但运行时间差距很大. // 常数=1时只需0.125秒; 常数=2时需要2.1秒; 常数=4时需要6.1秒. // 测试环境是 OpenJDK 11.0.1 64-bit, Win10 64-bit public class A { int v; public static void main(String[] args) { A a = new A(); Runnable[] r = new Runnable[] { () -> a.v++, () -> a.v++, () -> a.v++, () -> a.v++, }; for (int i = 0; i < 1000000000; i++) r[i % 1].run(); // 这里的1改为2和4的三种情况性能有极大差距 System.exit(a.v); } } 自己运行了一下,结果与问题描述的时间基本一致,常数为1时i%1的结果恒为0,猜测jvm应该做了优化。 使用javap查看....