首页 > 其他 > 详细

妨碍优化

时间:2015-12-20 11:45:17      阅读:264      评论:0      收藏:0      [点我收藏+]

妨碍优化
编译器安全优化时,会非常小心,编译器会保证在所有可能的情况下都安全才进行优化

第一个妨碍优化的例子就是当指针指向同一个位置


考虑下,如果xp和yp指向同一个位置,情况会怎样?
//假设*xp 和 *yp 都 = 1(同一个位置)
void twiddle1(int *xp,int *yp)
{
*xp += *yp; //1+1 = 2
*xp += *yp; //2+2 = 4
}

void twiddle2(int *xp. int * yp)
{
*xp += 2* *yp; // 1+2 = 3
}
//为了安全优化,编译器不会去优化他


同样的,q和p指向同一个位置,这往往和我们想的不一样(我们认为q和p指向不同位置)
x = 1000;
y = 3000;
*q = y; //q = 3000
*p = x; //q = 1000
t1 = *q; //1000

第二个例子就是函数调用

考虑以下代码
int counter = 0;
int f(){
return counter++;
}

int func1()

{
return f() + f() + f() + f(); // 0+1+2+3 = 6
}

int func2()

{
return 4 * f(); //4 * 0 = 0
}

 

妨碍优化

原文:http://www.cnblogs.com/yingzheng-programming/p/5060476.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!