码迷,mamicode.com
首页 > 其他好文 > 详细

妨碍优化

时间:2015-12-20 11:46:29      阅读:173      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!