代码1
while(1)
{
int i = 0;
//do something
}
代码2
int i = 0;
while(1)
{
i = 0;
//do something
}
这两个代码的性能是一样的还是代码1更贵?
非常令人印象深刻的输出这里是我的测试代码
class A {};
int main()
{
int count = 0;
int maxCount = 10000;
clock_t check;
check = clock();
while(count < maxCount)
{
int i = 0;
count++;
}
cout << clock() - check << endl;
count = 0;
int i = 0;
check = clock();
while(count < maxCount)
{
i = 0;
count++;
}
cout << clock() - check << endl;
check = clock();
while(count < maxCount)
{
A a;
count++;
}
cout << clock() - check << endl;
check = clock();
while(count < maxCount)
{
A* a = new A();
count++;
delete a;
}
cout << clock() - check << endl;
}
而每次输出都是0。
我觉得编译器的优化功能很强大,谢谢你们,如果我的测试代码有问题,请给我一些建议!
作为经验法则,在编译器的情况下。优化 开启,如果你能想到通过做一个小的改变来加快一些代码的速度,比如你所做的改变,那么这类编译器的非常聪明的作者也可以。
当然,尽可能的保持变量的局部性,有助于优化策略。而且这也是更好的编程风格。
如果你对编译器是否做好了工作有任何怀疑,你可以随时检查生成的汇编。