我有这样的东西
register unsigned int a, b, c;
int n;
for (n = 0; n < 10; ++n){
c = a + b
b = a
a = c
array[n] = c;
}不管它做什么,都无关紧要。代码以现在的方式运行得很快,如果删除register关键字,则运行速度会变慢。然而,当我在int n之前添加寄存器时,它实际上运行得比现在慢,但比不使用寄存器时要快。
有人能给我解释一下吗?谢谢。
发布于 2010-01-15 09:01:31
可用的寄存器数量有限,因此将所有内容标记为register并不会将所有内容都放入寄存器中。基准测试是知道它是否会有帮助的唯一方法。一个好的编译器应该能够自己找出将哪些变量放到寄存器中,所以在决定寄存器关键字有帮助之前,您可能应该进行更多的基准测试。
https://stackoverflow.com/questions/2068721
复制相似问题