在for循环中调用.length()比在循环之前调用慢吗?

Sop*_*ner 2 java optimization for-loop micro-optimization

在Java代码中,我认为:

for (int i = 0; i < s.length(); i++) {
    // do a lot of something
}
Run Code Online (Sandbox Code Playgroud)

比这慢:

int length = s.length();
for (int i = 0; i < length; i++) {
    // do a lot of something
}
Run Code Online (Sandbox Code Playgroud)

请告诉我,我是否正确.

Mar*_*ers 7

理论上,第一个代码示例可能较慢,因为它s.length()每次迭代调用一次.但是JVM可能会为您优化第一段代码.使用更简单的方法,除非基准测试显示:

  1. 你是一个性能关键的代码.
  2. 将长度存储在局部变量中确实可以加快速度.