我正在通过递增/递减运算符,我遇到了如果我以递减形式运行循环,在这种情况下,它将比增量形式的相同循环运行得更快.我期待两者都会花费相同的时间,因为将遵循相同数量的步骤.我在网上搜索但是找不到令人信服的答案.是否因为与增量运算符相比减量运算符花费的时间更少?
for(int i = 100000; i > 0; i--) {}
for(int i = 1; i < 100001; i++) {}
Run Code Online (Sandbox Code Playgroud)
Evg*_*eev 43
这是因为在字节码中,与0比较的操作与使用非零数字进行比较的操作不同.实际上i < 10001
需要首先在堆栈上加载数字然后执行比较,同时i > 0
作为一个操作执行.当然,由于JVM优化,在大多数情况下不存在速度差异.但是我们可以尝试通过使用-Xint选项运行代码使其可见(仅限解释模式执行).