例如
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在每次迭代中都做加法,这听起来是一个相当大的开销。但是,如果编译器足够聪明,可以将加法限制在单个时间内,那么我想让代码保持简短。
发布于 2018-12-30 16:47:23
过早优化是万恶之源。
现在不用担心这个了。
当您从循环中提取加法部分时,它实际上只会被计算一次。一些编译器可能足够聪明,可以优化这一点,但有些编译器可能不会。
几乎所有CPU进行32位整数加法所需的时间都非常小。如果您使用了分析器,并且发现for循环条件确实导致了性能问题,那么您应该去掉添加的内容,看看它是否有帮助。但是,当你甚至没有/还没有发现问题时,担心这个问题就没有什么意义了。
所以现在,根据你头脑中的想法来编写你的代码。例如,对于我来说,如果我在想“现在我需要重复这个(偏移量+计数)次...”,我会这样写
for (int i = 0 ; i < offset + count ; i++)如果我在想“现在我需要计算我们循环了多少次,然后我会循环那么多次”,那么我会写:
int limit = offset + count;
for (int i = 0 ; i < limit ; i++)https://stackoverflow.com/questions/53976196
复制相似问题