我正在使用 -O3 以提高程序的性能,同时使用 -g 添加调试符号(以防崩溃时使用核心转储)。有一件事情让我非常困扰,-g 选项会导致性能下降吗?当我对比带有和不带有 -g 的编译输出时,我发现不带 -g 的输出要比带 -g 的输出小80%。如果额外的空间用于调试符号,我不关心它(我猜)因为这部分在运行时是不会被使用的。但是,如果在没有 -g 的编译输出中,每个指令需要做4个以上的指令,在带有 -g 的编译输出中,则肯定更喜欢停止使用 -g 选项,即使代价是不能处理核心转储。
如何知道程序内调试符号部分的大小,总之,是否使用 -g 进行编译会导致程序运行比不使用 -g 编译的同样代码运行更慢?
-g
只是添加调试符号。显然,这取决于你的程序。 - Shiplu Mokaddim