我记得很多年前他们教我们在循环之外创建局部变量,例如:
SomeVariable* var;
for(int i; i<10; i++)
{
var = [someArray objectAtIndex:i];
(...)
}
我假设现代编译器会自动完成这种优化,例如在 Objective C 中,下面的代码将被优化以与上面的代码一样快地执行:
for(int i; i<10; i++)
{
SomeVariable* var = [someArray objectAtIndex:i];
(...)
}
我说得对吗?
for-in
循环经过优化,可以快速执行。
例如:
for( SomeVariable *var in someArray )
{
//do something with var
}
据我所知,这一切以及周围的许多事情(循环概述、分支预测等)将由编译器自动完成。无需过早优化。
只需接触最佳实践和“良好的设计模式”,然后让编译器完成它的工作!
关于 Wikipedia 的好文章,如果您真的有兴趣了解更多信息,我建议您阅读“Aho、Lam、Sethi、Ullman,编译器原理、技术和工具,第二版。Addison-Wesley,2006 年”。