关于这样 gcc -O3 和-O2 -Os 的说法对吗

时间:2021-05-17 02:12:57
在 x86 系列cpu采用 -O3 并不是一种好的选择。因为 x86 系列cpu缺乏足够寄存器,-O3 会导致代码变慢。

另外,-O3 包含了 -finline-functions,这会使目标代码不必要地膨胀,从而导致执行变慢。

所以在 x86 系列 cpu 采用 -O2 和 -Os 的效果比 -O3 好。

建议 CFLAGS 设置如下:
CFLAGS="-O2 -march=pentium4 -pipe"


/etc/make.conf 中 LDFLAGS 的设置对性能有较大的影响。

1、基础优化:

LDFLAGS="-Wl,-O1"

这种优化设置非常安全,不会有什么问题。

2、通过"—as-needed"加快软件载入速度:

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

在这种优化设置中,加入了--as-needed参数,这将避免软件连接多余的库,从而大大提升软件的载入速度,特别是 KDE 和 GNOME 这类大型软件的载入速度。
这是我喜爱的一种优化方案。
需要注意的是,由于有些软件包不支持 --as-needed 参数而导致 emerge 失败,在构造这类软件包时需要取消 --as-needed 参数。