gcc -O0与-Og编译时间

时间:2013-03-21 19:48:57

标签: c++ debugging gcc optimization

gcc的发行说明在-Og上有点模糊:

  

它满足了快速编译和卓越调试体验的需求,同时提供了合理的运行时性能。总体开发经验应优于默认优化级别-O0。

“整体开发经验”是否包括编译时间?如果我不需要调试符号并且我正在优化编译时间,那么我应该使用-O0还是-Og?

3 个答案:

答案 0 :(得分:1)

  

“整体开发经验”是否包括编译时间?

我认为确实如此,但不是在这个非常具体的情况下。

  

如果我不需要调试符号并且正在优化编译时间,我应该使用-O0还是-Og?

-O0

答案 1 :(得分:0)

  

如果我不需要调试符号并且正在优化编译时间,我应该使用-O0还是-Og?

如果调试符号的存在与否无关紧要,请同时选择两个选项并查看哪一个更快。

答案 2 :(得分:-1)

使用-Og编译器必须构造和写出额外的数据(用于调试),因此需要更长的时间。只需编译成汇编程序(使用gcc -S -Og等)并进行比较。但是,-O0-Og运行时之间的差异可能与启动gcc及其完整机制的时间相形见绌。

如果你想要编译时间,也许你应该考虑{C} tcc。对于C ++来说,LLVM可能更快。