如果你的for循环有2个主要部分,就像这样:
for (object o : objects){
doSomething(o);
doSomething2(o);
}
当你将这个循环分成2个较小的循环时会不会影响性能呢?
for (object o : objects){
doSomething(o);
}
for (object o : objects){
doSomething2(o);
}
答案 0 :(得分:6)
从技术上讲,是的,你最终必须迭代两次。根据定义,除了在可能的操作的窄带中,这将比迭代一次慢。你还必须分配迭代器对象两次而不是一次,等等。如果你正在处理一个庞大的列表,我想两个循环也可能导致更多的内存分页。
在现实世界中?你必须有一个非常大的列表,或者真的慢的迭代器,因为它很重要。
主观地说:如果你可以做任何一种方式(例如,操作的顺序并不重要),我会做任何一个在写作和阅读方面最有意义的方法。码。对我来说,通常这将是一个循环,因为我看到每个对象发生的事情非常清楚,但可能你有理由问。我不会担心性能,除非我知道我将要处理真正大规模的事情(数十万甚至数百万条目),或者我看到了现实世界的问题我正在解决的代码。