如果你有一个包含 2 个主要部分的 for 循环,如下所示:
for (object o : objects){
doSomething(o);
doSomething2(o);
}
像这样将循环拆分为 2 个较小的循环会影响性能吗?
for (object o : objects){
doSomething(o);
}
for (object o : objects){
doSomething2(o);
}
最佳答案
从技术上讲, 是的,您最终不得不迭代两次。根据定义,除了可能的操作范围很窄之外,这将比迭代一次慢。您还必须将迭代器对象分配两次而不是一次,等等。如果您正在处理一个庞大的列表,我想两个循环也可能导致更多的内存分页。
在现实世界中?你必须有一个非常大列表,或者一个非常慢的迭代器,这才重要。
主观上:如果您可以以任何一种方式进行操作(例如,操作顺序无关紧要),我会选择在编写和阅读代码方面最有意义的操作。对我来说,通常这将是一个循环,因为这样我就可以很清楚地看到每个对象发生了什么,但大概你有理由问。我不会担心性能,除非我知道我要处理真正庞大的东西(数十万甚至数百万个条目),或者我看到一个现实世界的问题代码我在讲话。
关于java - 将循环分成更小的循环是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721797/