考虑到我是从源+ mpfr,gmp,mpc,libelf和binutils构建GCC,更改优化标志是个好主意
CFLAGS="-O3" CXXFLAGS="-O3" ./configure
配置GCC或任何其他软件时?
我有一个c2duo。
编辑:我担心这些标志可能会改变这些程序/库的行为。答案 0 :(得分:4)
您可以做两件事:
如果您是本地引导程序,则可以执行完整且完整的配置文件引导程序。这将使用引导编译器构建编译器和依赖项,为第三轮提供可用于优化自身的配置文件信息。在configure
之后,执行make profiledbootstrap
。请注意,您可以将依赖关系和东西放在gcc源代码树中,并且它们也应该在这个过程中构建。
如果您不想通过长篇配置的引导程序,请在GCC设置CFLAGS
,CXXFLAGS
,CFLAGS_FOR_TARGET
,CXXFLAGS_FOR_TARGET
等。配置时间:
-O2 -flto -march=core2
并将LDFLAGS
和LDFLAGS_FOR_TARGET
设置为
-flto
这将优化最安全的东西。
请注意,所有这些问题可能只会导致最终可执行文件的速度加快。
答案 1 :(得分:2)
先测量,然后优化。在这种情况下,我会先尝试 使用stock编译器编译gcc以及默认值 配置设置为(步骤0)。
一旦我确定然后干净利地完成编译,我会做
make distclean
或类似,然后测量编译时间 库存当前编译器。 (步骤1)。
接下来,安装新的gcc并测量新gcc的时间(以及任何 其他工具),使用默认配置编译,编译 他们自己。 (第2步)
然后,使用任何-O optmization级别或其他级别进行编译 您喜欢的非默认设置。一旦你得到了 干净的编译,做'make distclean'并再次测量如何 很长一段时间它需要新的默认设置gcc来编译自己 使用非默认设置(步骤3)。
现在,你有一个可以用来编译的-O3(或其他)gcc 本身(步骤4)以与其他步骤相同的方式测量。
最后,比较时间(确定你已经开始了 每次编译前的基本状态相同)。你真正关心的部分 关于步骤2和步骤4,但是1和3也可以提供信息。
请注意,这确实只测量gcc(或其他任何速度)的速度 编译器)可以编译自己,如果你编写的代码 与此截然不同,您的里程可能会有所不同 - 但您可以 使用相同的技术来测量和比较速度 编译时的各种优化级别 你经常编译的代码。
答案 2 :(得分:1)
编辑:我担心这些标志可能会改变这些程序/库的行为。
它不应该,但有时会改变/破坏行为 如果您想确定,请坚持使用经过良好测试的默认设置。
请注意,如果其他值lile -O1
或-O3
产生了明显更好的性能,那么这些设置将成为标准,并且现在已经过测试。