【发布时间】:2022-02-07 14:57:00
【问题描述】:
GCC manual 列出了应用于不同优化级别(-O1、-O2 等)的所有优化标志。但是,在编译和测量基准程序(例如 cBench 的汽车位计数)时,应用优化级别而不是手动打开所有列出的优化时存在显着差异。对于带有 auto_bitcount 程序的 -O1,我测量了在使用 -O1 编译而不是手动应用所有列出的标志时大约 100% 的加速。这些“隐藏”的优化实际上似乎是 GCC 为 -O1 所做的优化工作的主要部分。手动应用标志时,与没有优化相比,我只能获得大约 10% 的加速。
当应用来自gcc -c -Q -O3 --help=optimizers 的所有启用标志时,可以观察到相同的情况。
在 GCC 手册中,我找到了解释这种行为的部分:
并非所有优化都直接由标志控制。本节仅列出具有标志的优化。 大多数优化在 -O0 或未在命令行上设置 -O 级别时完全禁用,即使指定了单独的优化标志。
由于我找不到有关这些优化的任何进一步文档,我想知道是否有控制它们的方法以及详细的优化是什么?
【问题讨论】:
标签: gcc optimization