c – 在GCC 4.1.1中优化文件中各个函数的方法是什么?

各种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拆分单独的要优化的函数库确实是您唯一的选择.

上一篇:c – 为什么打包对象的sizeof低于预期?


下一篇:C++ 无法打开文件“xxx.lib”错误的解决办法