C++代码优化(2)
尽可能使用常量。
尽可能使用常量。C++标准规定,如果没有获得const声明的对象的地址,允许编译器不为其分配存储空。这样可以让代码更高效,生成更好的代码。
提高循环的性能。
为了提高循环的性能,减少冗余的常数计算(例如,不随循环变化的计算)是非常有用的。
错误代码(包括for()中的不变if())推荐代码
对于(我...
{
if(constant 0
{
dowork 0(I;//假设constant 0
}
else
{
dowork 1(I;//假设constant 0
}
}
if(constant 0
{
for(I...
{
dowork 0(I;
}
}
else
{
for(I...
{
dowork 1(I;
}
}
如果已经知道If()的值,可以避免重复计算。虽然可以简单地预测坏代码中的分支,但推荐的代码可以减少对分支预测的依赖,因为分支在进入循环之前就已经确定了。将局部函数声明为静态的。
如果一个函数没有在实现它的文件之外使用,那么就声明它是静态的,以强制使用内部连接。否则,该功能将被默认定义为外部连接。这可能会影响某些编译器的优化,例如自动内联。
考虑动态内存分配。
动态内存分配(“在C++中;新”;)可能总是返回长基本类型的对齐指针(四字对齐)。但是如果不能保证对齐,那么使用下面的代码来实现四字对齐。这段代码假设指针可以映射到long。
例子
double* p = (double*)新字节[sizeof(double)* number _ of _ doubles+7L];
double * NP =(double *)((long(p)+7L)&;–8L);
现在,你可以用np代替P来访问数据。注意:释放存储空房间时还是要用delete p。
位律师回复
0条评论