上游 Linux 开辟者否决"-O3"级其他内核优化

局长
 局长
发布于 2020年05月16日
收藏 6

六一兴趣技巧问答,“秃顶”要从娃娃抓起!>>>

WireGuard 作者 Jason A. Donenfeld 上周向 Linux 内核提交了一个补丁,他建议在应用新发布的 GCC 10 编译器或更高的版本时,将内核的默许编译优化级别由 -O2 设置为 -O3。

Jason 解释道,GCC 10 对 -O2 停止了改进,以便在应用 -flto 时延长编译时间,不过这仿佛是以就义性能为价值来完成的。而如今的 -O3 优化不存在和 10 年前异样的 bug,所以当 gcc >= 10 时,他提交的补丁会将 Linux 内核的编译优化默许设置为 -O3 级别。

关于这个提交,部分开辟者表示有兴趣支撑 -O3 优化级其他子集功能,乃至摸索 -Og 级其他优化,并尽力延长构建内核花费的时间,以便于测试。

不过整体看来,将内核默许编译优化级别设置为 -O3 的提案遭到了广泛的否决,由于这不用定会让内核变得更快,反而有能够会引入因优化而招致出现的特别特点,乃至会产生让代码变得更慢的处所。

Linus Torvalds 也停止了表态,他不认为这是一个明智的想法主意,特别是 GCC -O3 级其他优化有时会招致出现成绩。

GCC 开辟者 Richard Biener 也写道,他不建议在内核中应用 -O3 级其他优化。他曾经提出应用 feedback/profile-driven 的数据让编译器做出更好优化决定计划的想法主意,但这会是一个异常宏大年夜的义务,须要为 FDO 搜集到足够的数据才能领会到便利的地方。

是以,至少今朝来看,Linux 内核仿佛不会寻求这类更具侵犯性、更守旧的编译器优化级别。

本站文章除注明转载外,均为本站原创或编译。迎接任何情势的转载,但请务必注明出处,尊敬他人休息共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://aledoyoga.com]
本文标题:上游 Linux 开辟者否决"-O3"级其他内核优化
加载中

出色评论

南湖船老大年夜
南湖船老大年夜
可是,之前这个eechen还在知乎吹捧gcc的O3优化啊。
https://www.zhihu.com/question/42226391
eechen
eechen
过度优化是魔鬼.
我本身停止过一些简单的C法式榜样测试,O3优化有时辰比O2还慢:
1亿次二分查找:
gcc -Os binary_search.c -o binary_search && time ./binary_search
gcc -O2 binary_search.c -o binary_search && time ./binary_search
gcc -O3 binary_search.c -o binary_search && time ./binary_search
Os : O2 : O3 耗时比较 0m1.112s : 0m0.303s : 0m0.311s
1切切次冒泡排序:
gcc -Os bubble_sort.c -o bubble_sort && time ./bubble_sort
gcc -O2 bubble_sort.c -o bubble_sort && time ./bubble_sort
gcc -O3 bubble_sort.c -o bubble_sort && time ./bubble_sort
Os : O2 : O3 耗时比较 0m0.695s : 0m0.516s : 0m0.433s
总结:普通情况,建议应用-O2优化.

并且-O3优化,有时辰会招致某些项目编译不经过过程.
Linus Torvalds固然寻求性能优先,但他此次表态否决-O3优化,也说清楚明了-O3不是最好的选择.
eechen
eechen
能够那些个写Python和Java的,都没编译过大年夜型C项目吧.
在Linux上写PHP的,倒是会常常编译最新版PHP.
编译过PHP的同窗,看看configure后生成的Makefile,
便可以知道PHP编译默许也是采取 -O2 优化.

PHP还有个黑科技,可以针对特定应用停止特异性优化.
应用了GCC的PGO(Profile Guided Optimization).
真才实学的建议去看看鸟哥的博客吧:
http://www.laruence.com/2015/06/19/3063.html

最新评论(12

kut
kut
我之前LFS设的是-O6,如今想想都害怕。
南湖船老大年夜
南湖船老大年夜
可是,之前这个eechen还在知乎吹捧gcc的O3优化啊。
https://www.zhihu.com/question/42226391
catroll
catroll
忘性真好 @eechen 要不要辩驳?
z
zjh6
谁又不曾错过?
MrD
MrD
错了?哪里错了?
eechen
eechen
过度优化是魔鬼.
我本身停止过一些简单的C法式榜样测试,O3优化有时辰比O2还慢:
1亿次二分查找:
gcc -Os binary_search.c -o binary_search && time ./binary_search
gcc -O2 binary_search.c -o binary_search && time ./binary_search
gcc -O3 binary_search.c -o binary_search && time ./binary_search
Os : O2 : O3 耗时比较 0m1.112s : 0m0.303s : 0m0.311s
1切切次冒泡排序:
gcc -Os bubble_sort.c -o bubble_sort && time ./bubble_sort
gcc -O2 bubble_sort.c -o bubble_sort && time ./bubble_sort
gcc -O3 bubble_sort.c -o bubble_sort && time ./bubble_sort
Os : O2 : O3 耗时比较 0m0.695s : 0m0.516s : 0m0.433s
总结:普通情况,建议应用-O2优化.

并且-O3优化,有时辰会招致某些项目编译不经过过程.
Linus Torvalds固然寻求性能优先,但他此次表态否决-O3优化,也说清楚明了-O3不是最好的选择.
me坤子
me坤子
php是最牛逼的说话,不接收辩驳
eechen
eechen
能够那些个写Python和Java的,都没编译过大年夜型C项目吧.
在Linux上写PHP的,倒是会常常编译最新版PHP.
编译过PHP的同窗,看看configure后生成的Makefile,
便可以知道PHP编译默许也是采取 -O2 优化.

PHP还有个黑科技,可以针对特定应用停止特异性优化.
应用了GCC的PGO(Profile Guided Optimization).
真才实学的建议去看看鸟哥的博客吧:
http://www.laruence.com/2015/06/19/3063.html
me坤子
me坤子
大年夜神,怀念PHP是最牛逼说话的年代
专业写BUG的法式榜样员
专业写BUG的法式榜样员
你为啥要扯上java。 你编译tomcat源码尝尝,也得半天。
bbdlg
bbdlg
谁辩驳怼谁🙈
前往顶部
顶部