1.内联:
1.编译器更倾向于将小的或者只调用一次的函数内联,因为其他的内联会让函数变得很大
优点:
1.清除传参、返回的开销
2.代码更连续提高cache率
3.如果内联函数只被调用了一次,那么内联能降低代码的内存占用
2.常量折叠(folding)与传播(propagation):
1. 折叠:代码中的b + 2.0/3.0 编译后会变成 b + 0.66666667
2. 传播:{
float f(float x)
{ return x*x + 1.0f; }
float a,b;
a = f(2.0f);
b = a + 1.0f;
}
会变成:
{
a = 5.0;
b = 6.0;
}
但是如果f函数无法内联,则不会发生传播,如sin(0.5)不会发生传播,因为sin函数定义再某些库中,它的运算过程比较复杂
C++ 代码优化
最新推荐文章于 2024-04-29 11:56:38 发布