【发布时间】:2017-01-06 10:56:08
【问题描述】:
(这是一个关于 gcc 和 clang 的问题,但可能适用于其他编译器。)
如果我编译我的 C 或 C++ 代码,并使用 -g 开关生成调试信息,这本身是否会以任何方式降低已编译程序的性能...
- 最小优化 (
-O0)? - 最大优化 (
-O3)?
注意:我并不是说必须解析/加载可执行文件的性能损失,由于额外的内容,性能损失更大;我的意思是运行的代码。
【问题讨论】:
-
比较使用
-g编译的程序和没有-g编译的相同程序。您应该看到实际生成的代码没有区别。 -
@JoachimPileborg:我看不到为特定程序生成的代码的差异这一事实并不一定意味着没有任何差异......
-
严格来说:是的,至少当您将调试符号保留在可执行文件中时,因为这意味着要加载更多内容(或在加载过程中跳过)。不过,这在 IMO 实践中可以忽略不计。
-
@DanielJour:是的,好吧,公平点,但这不是我的意思。添加注释以澄清。
-
据我所知,-O3 会降低调试信息的价值,而不是相反。
标签: c++ c gcc clang debug-information