c - 将代码拆分为文件和 O 标志

标签 c gcc lto translation-unit

用C语言编写可并行执行的程序时,我们肯定会使用O flags来优化代码。

gcc -Olevel [options] [source files] [object files] [-o output file]

在大型项目中,我们通常split the code into several files .我没有找到答案的问题是:

程序的性能是否会因为我们将代码拆分到文件中而 O 标志没有足够的信息来进一步优化而完全下降?有这种可能吗?

最佳答案

当您将代码分解成单独的文件时,它可能会将其拆分为多个翻译单元,而编译器通常无法对其进行优化。

以在一个翻译单元中定义但在许多其他翻译单元中引用的常量为例。所有引用常量的计算都必须在运行时执行,因为常量不能在编译时折叠到它们中。

链接时间 optimization (-flto) 是绕过限制的一种方法。

关于c - 将代码拆分为文件和 O 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443038/

相关文章:

谁能找到为什么解决后缀表达式的程序给出运行时错误

c - CPU 是否自动为内存分配一个值?

c - GCC 8 for ARM 在 LTO 模式下正在删除中断处理程序和弱函数 - 如何防止它?

所有编译时优化都可以通过链接时优化来完成吗?

c - 对char数组的更改在printf中不可见

c - 使用字符串的二维数组

c++ - extern "C"extern 变量在 C++ 程序中作为类变量寻求..如何声明它?

c - Gcc:匿名字符串的内存区域

python - 在 Linux 上以用户身份使用完整的 Sqlite3 构建 Python 2.5

c - 如何将 LTO 与符号版本控制相结合