我试图更深入地了解各种编译器优化对现代 C++ 应用程序的性能和代码大小的影响。我正在使用一个 C++17 项目作为我的测试场,我想深入了解哪些优化提供了最大的好处,同时在代码大小和性能之间保持合理的平衡。
问题:
我一直在研究 GCC 和 Clang 编译器文档,但我仍然不确定使用不同优化级别和标志的实际含义。此外,我很好奇哪些特定于编译器的优化可能会对性能和代码大小产生重大影响,以及我如何在配置我的构建系统时做出明智的决定。
我尝试过的和期望的:
我已经尝试过 -O1、-O2、-O3 和 -Os 优化级别,以及一些单独的标志,如 -funroll-loops、-finline-functions 和-fno-exceptions。我希望看到优化级别与结果性能和代码大小之间的清晰模式,但结果不一致,有时甚至令人惊讶。我正在寻找一种更系统的方法来理解和利用我的 C++ 项目中的编译器优化。
我很感激任何可以帮助我更好地理解这个主题的见解或资源。谢谢!