use*_*204 4 java loops control-flow
如果你有一个包含2个主要部分的for循环,就像这样:
for (object o : objects){
doSomething(o);
doSomething2(o);
}
Run Code Online (Sandbox Code Playgroud)
当你将这个循环分成2个这样的较小循环时,它会影响性能吗?
for (object o : objects){
doSomething(o);
}
for (object o : objects){
doSomething2(o);
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,是的,你最终必须迭代两次.根据定义,除了在可能的操作的窄带中,这将比迭代一次慢.你还必须分配迭代器对象两次而不是一次,等等.如果你正在处理一个庞大的列表,我想两个循环也可能导致更多的内存分页.
在现实世界?你需要有一个非常大的列表,或者一个非常慢的迭代器,因为它很重要.
主观上:如果你能够以任何一种方式做到这一点(例如,操作的顺序无关紧要),那么在编写和阅读代码方面,我会做最有意义的事情.对我来说,通常这将是一个循环,因为那时我很清楚地看到每个对象发生了什么,但大概你有理由问.除非我知道我将要处理真正庞大的事情(数十万甚至数百万条目),否则我不会担心性能,或者我看到了我正在处理的代码的真实问题.