例如
int offset = getOffset();
int count = getCount();
int limit = count + offset;
for (int i; i < limit; i++) {}
比
更可取int offset = getOffset();
int count = getCount();
for (int i; i < offset + count; i++) {}
如果 Java VM 在每次迭代时都进行加法,这听起来是相当大的开销。但如果编译器足够聪明,可以将添加限制为单次,我希望保持代码简短。
最佳答案
Premature optimization is the root of all evil.
现在不用担心这个。
<小时/>当您将加法部分从循环中提取出来时,它确实只会被评估一次。有些编译器可能足够聪明,可以对此进行优化,但有些编译器可能不会。
几乎所有 CPU 执行 32 位整数加法所需的时间非常小。如果您使用分析器并发现 for 循环条件确实导致性能问题,那么您应该删除添加内容并看看它是否有帮助。但是,当您甚至没有/还没有发现问题时,担心它是没有意义的。
<小时/>所以现在,根据你的想法编写代码。例如,对我来说,如果我想“现在我需要重复这个(偏移+计数)次......”,我会写
for (int i = 0 ; i < offset + count ; i++)
如果我在想“现在我需要计算我们循环多少次,然后我会循环那么多次”,那么我会写:
int limit = offset + count;
for (int i = 0 ; i < limit ; i++)
关于java - 是否最好预先计算 for 循环的条件语句部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53976196/