New*_*ech 3 c c++ indexing performance for-loop
在编码时我遇到了一个问题:
当我必须使用大量for循环时,所有迭代都在不同的范围内.如果我只将一个变量声明为索引(示例I)或者它根本不重要(示例II),那么性能(即运行时)会更好吗?
例I:
int ind;
for(ind=0; ind < a; ind++) { /*do something*/ }
for(ind=0; ind < b; ind++) { /*to something*/ }
...
for(ind=0; ind < z; ind++) { /*to something*/ }
Run Code Online (Sandbox Code Playgroud)
例二:
for(int ind=0; ind < a; ind++) { /*do something*/ }
...
for(int ind=0; ind < z; ind++) { /*do something*/ }
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
如果您正在启用优化(如果不这样做,任何关于性能的讨论都没有实际意义)那么就无法推断编译器在这两种情况下会做什么.
答案取决于:
i通常都会被优化掉).以下是编写快速代码的方法:
为了记录,你应该这样写:
for(int ind=0; ind < a; ++ind)
Run Code Online (Sandbox Code Playgroud)
因为它更优雅(ind的范围有限),不太可能是bug,使用ind的预增量(如果ind恰好成为类类型则表现更好)并表达intent(ind用于此循环).