Pystd, similar-ish functionality with a fraction of the compile time
16 days ago
- #Standard Library
- #C++
- #Compilation Speed
- 作者讨论了Pystd,一个为提升编译速度而从零编写的C++标准库,它并非ISO规范的实现。
- C++编译速度显著慢于C,一个'hello world'程序在C++中耗时可达2.3秒,而在C中仅需0.02秒,速度下降约100倍。
- 这种速度下降归因于标准库实现——包含如<vector>的头文件会扩展至约29,000行预处理代码,从而增加编译时间。
- Pystd的设计优先级依次为编译时间、实现简洁性和性能,旨在减少构建时间,其要求任何头文件的编译时间控制在0.15秒内。
- Pystd目前包含6,500行头文件和5,600行源代码,提供类似Python模块的功能,如容器(向量、哈希映射)、算法、智能指针和实用工具。
- 采用Pystd使得CapyPDF库的编译时间减少80%,未剥离二进制文件大小缩减高达75%,运行时性能提升25%。
- 该项目包含一个性能测试脚本,用于强制执行编译时间限制(即使在树莓派等较慢硬件上),支持Linux和macOS,但因缺少编译器特性而不支持MSVC。
- 作者承认项目缺乏文档;建议使用AI工具生成文档,但出于伦理原因避免在代码库中包含AI生成的内容。