各种 C/C++ 编译器都有#pragma
s 来控制优化。
例如:
代码战士
#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,所以我不能使用优化属性——即__attribute__((optimize(...)))
.
此外,在此目标平台的工具链上,还有一个自动批量构建工具;因此也不可能只将函数拆分为单独的文件并更改优化参数,因为项目中的文件可以自动组合以提高编译和链接速度。我必须为这些函数创建一个单独的库,并链接它以执行拆分方法。这可能比它的价值要痛苦得多——尤其是如果有一种更简单的方法可以实现这一点。