首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否更可取的是预先计算for循环的条件语句部分?

是否更可取的是预先计算for循环的条件语句部分?
EN

Stack Overflow用户
提问于 2018-12-30 16:28:10
回答 1查看 72关注 0票数 0

例如

代码语言:javascript
复制
int offset = getOffset();
int count = getCount();
int limit = count + offset;
for (int i; i < limit; i++) {}

更可取的

代码语言:javascript
复制
int offset = getOffset();
int count = getCount();
for (int i; i < offset + count; i++) {}

如果Java VM在每次迭代中都做加法,这听起来是一个相当大的开销。但是,如果编译器足够聪明,可以将加法限制在单个时间内,那么我想让代码保持简短。

EN

回答 1

Stack Overflow用户

发布于 2018-12-30 16:47:23

过早优化是万恶之源。

现在不用担心这个了。

当您从循环中提取加法部分时,它实际上只会被计算一次。一些编译器可能足够聪明,可以优化这一点,但有些编译器可能不会。

几乎所有CPU进行32位整数加法所需的时间都非常小。如果您使用了分析器,并且发现for循环条件确实导致了性能问题,那么您应该去掉添加的内容,看看它是否有帮助。但是,当你甚至没有/还没有发现问题时,担心这个问题就没有什么意义了。

所以现在,根据你头脑中的想法来编写你的代码。例如,对于我来说,如果我在想“现在我需要重复这个(偏移量+计数)次...”,我会这样写

代码语言:javascript
复制
for (int i = 0 ; i < offset + count ; i++)

如果我在想“现在我需要计算我们循环了多少次,然后我会循环那么多次”,那么我会写:

代码语言:javascript
复制
int limit = offset + count;
for (int i = 0 ; i < limit ; i++)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53976196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档