我在一些地方看过gcc
尝试使用-O2
而不是-O3
进行尾调用优化。为什么后者优于前者?前者应该执行较少的优化。
答案 0 :(得分:2)
我认为这不准确。从gcc文档(https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html)中,标志-foptimize-sibling-calls
负责消除尾递归,并且在-O2和-O3都启用。
-foptimize-sibling-calls
Optimize sibling and tail recursive calls.
Enabled at levels -O2, -O3, -Os.
答案 1 :(得分:0)
RTFM。
-O3打开-O2
指定的所有优化
(https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#Optimize-Options)