我理解编译具有不同优化级别的代码(例如-O2和-O3 )可以生成不同的汇编代码,从而导致不同的性能。对于一个大型项目,我们通常有几个第三方库,这些库通常经过很好的测试。我们通常选择Release类型来构建依赖项,即使用-O3标志。对于我们新开发的部件,我们可以使用其他优化级别而不是-O3来进行调试和测试。我想知道,除了性能降级之外,在代码的不同部分上使用不同的优化级别是否还有其他的含义。
发布于 2022-01-05 10:33:19
就正确性而言,不应该有。如果优化级别更改了ABI,那么这将是一个编译器错误。
在-O0或-Og上进行测试/调试构建并链接到优化的库(包括但不限于像libc这样的系统库)是100%正常的。
测试/优化性能时只需要-O3 -flto -march=native等。
https://stackoverflow.com/questions/70587888
复制相似问题