针对代码的不同部分使用不同的优化级别进行编译
Compile with different optimzation levels for different parts of a code
我了解编译具有不同优化级别的代码,例如-O2
和 -O3
可以生成不同的汇编代码,从而导致不同的性能。对于一个大的项目,我们往往会有几个第三方库,这些库往往经过很好的测试。我们通常选择 Release
类型来构建依赖项,即带有 -O3
标志。对于我们新开发的部分,出于调试和测试的原因,我们可以使用其他优化级别而不是 -O3
。我想知道除了性能下降之外,在代码的不同部分使用不同的优化级别是否还有其他影响。
就正确性而言,应该没有。如果优化级别更改了 ABI,那将是一个编译器错误。
针对优化库(包括但不限于 libc 等系统库)在 -O0
或 -Og
和 link 处进行 test/debug 构建是 100% 正常的。
在测试/优化性能时,您只需要 -O3 -flto -march=native
等等。
我了解编译具有不同优化级别的代码,例如-O2
和 -O3
可以生成不同的汇编代码,从而导致不同的性能。对于一个大的项目,我们往往会有几个第三方库,这些库往往经过很好的测试。我们通常选择 Release
类型来构建依赖项,即带有 -O3
标志。对于我们新开发的部分,出于调试和测试的原因,我们可以使用其他优化级别而不是 -O3
。我想知道除了性能下降之外,在代码的不同部分使用不同的优化级别是否还有其他影响。
就正确性而言,应该没有。如果优化级别更改了 ABI,那将是一个编译器错误。
针对优化库(包括但不限于 libc 等系统库)在 -O0
或 -Og
和 link 处进行 test/debug 构建是 100% 正常的。
在测试/优化性能时,您只需要 -O3 -flto -march=native
等等。