ILD

gcc optimization levels
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2020-2-10 站点:Inside Linux Development

我们的软件应该选择那个优化等级:


-O0 or no -O option

不优化,这也是默认选项,如果要debug程序,推荐开启该选项。


-O1 or -O

开启大多数基本的优化,通常不使用-O1。


-O2

开启更多的优化,这是许多软件的默认优化等级,包括内核和所有的GNU项目。


-O3

开启更多昂贵的优化。


-Os

优化binary的大小。


参考3,研究了不同优化等级的性能,-O0有更快的编译速度,但是性能有时候只有-O2的50%。


参考2,给出了推荐的编译flags。


参考:

[1] Robert Love.

https://www.quora.com/When-should-you-use-the-different-GCC-optimization-flags-e-g-O2-I-saw-that-OpenCV-uses-the-O2-optimization-instead-of-O3-on-32-bit-Linux-What-are-the-pros-cons-of-each-optimization-level


[2] Florian Weimer. Recommended compiler and linker flags for GCC.

https://developers.redhat.com/blog/2018/03/21/compiler-and-linker-flags-gcc/


[3] Michael Larabel. The Performance Between GCC Optimization Levels.

https://www.phoronix.com/scan.php?page=article&item=gcc_47_optimizations&num=1


[4]

https://www.linuxtopia.org/online_books/an_introduction_to_gcc/gccintro_49.html


 

Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.