各种C/C++编译器都有#pragma来控制优化.
例如:
的CodeWarrior
#pragma optimization_level 0
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimization_level 3
void func_full_opt()
{
// Some Work - optimized
}
MSVC
#pragma optimize("g", off)
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimize("g", on)
void func_full_opt()
{
// Some Work - optimized
}
#pragma optimize("", on)
void func_default_opt()
{
// Some Work - default optimizations
}
出于纯粹的性能原因,我有一些需要在所有版本中进行优化的函数,包括未经优化的调试版本.
在GCC(特别是4.1.1)中是否有办法做类似于其他编译器的操作?不幸的是,我的目标平台(专有硬件)不支持GCC 4.4,所以我不能使用optimize属性 – 即__attribute __((optimize(…))).
此外,在此目标平台的工具链上,有一个自动批量构建工具;因此,也不可能将函数拆分为单独的文件并更改优化参数,因为项目中的文件可以自动组合以增加编译和链接速度.我必须创建一个仅包含这些函数的单独库,并将其链接到以执行拆分方法.这可能比它的价值更加痛苦 – 特别是如果有一种更简单的方法来实现这一点.
解决方法:
看起来__attribute __((optimize(…)))是在GCC中控制每个函数优化的唯一方法.因此,使用GCC 4.1.1拆分单独的要优化的函数库确实是您唯一的选择.