我们的计算机科学老师曾经说过,由于某些原因,倒计时比计数更有效率.例如,如果你需要使用FOR循环并且某个地方没有使用循环索引(比如在屏幕上打印一行N*),我的意思是这样的代码:
for (i = N; i >= 0; i--)
putchar('*');
Run Code Online (Sandbox Code Playgroud)
比以下更好:
for (i = 0; i < N; i++)
putchar('*');
Run Code Online (Sandbox Code Playgroud)
这是真的吗?如果是这样,有谁知道为什么?
使用类似的东西是否有任何性能差异
for(int i = 0; i < 10; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
和
for(int i = 0; i < 10; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)
或者编译器是否能够以这样的方式进行优化,使它们在功能相同的情况下同样快速?
编辑:这是因为我与同事讨论过这个问题,并不是因为我觉得它在任何实际意义上都是有用的优化.它主要是学术性的.
我正在通过递增/递减运算符,我遇到了如果我以递减形式运行循环,在这种情况下,它将比增量形式的相同循环运行得更快.我期待两者都会花费相同的时间,因为将遵循相同数量的步骤.我在网上搜索但是找不到令人信服的答案.是否因为与增量运算符相比减量运算符花费的时间更少?
for(int i = 100000; i > 0; i--) {}
for(int i = 1; i < 100001; i++) {}
Run Code Online (Sandbox Code Playgroud)