Precompiled headers and why Squid won't be using them (2023)
6 months ago
- #Compilation Optimization
- #Precompiled Headers
- #C++
- 预编译头文件通过保存C++编译过程中关键头文件的中间状态,减少重复工作。
- GCC使用.gch后缀作为预编译头文件,若同一目录下存在则自动使用。
- Clang要求.pch后缀并需显式使用-include-pch开关,且包含规则严格。
- Squid暂未计划支持MSVC的预编译头文件功能。
- 理论上Squid的编码规范可从预编译头文件中受益,因其包含大量头文件。
- 实验数据显示GCC仅带来5%的编译速度提升,且存在集成难题。
- Autotools与GCC的集成方案较为粗糙,需自定义Makefile规则和条件编译。
- Clang强制要求-include-pch及构建顺序控制,构成显著障碍。
- 鉴于复杂性与有限收益,Squid最终放弃采用预编译头文件。
- 改进建议包括Clang可借鉴GCC对缺失预编译头文件的宽容处理机制。