Decompression up to 30% faster in CPython 3.15
6 months ago
- #Zstandard
- #Performance Optimization
- #CPython
- CPython的compression.zstd模块被发现比第三方Zstandard Python绑定(如pyzstd、zstandard和zstd)速度更慢
- 基准测试显示标准库的解压速度慢10-25%,在解压任务中尤为明显
- 最初对性能差距的解释包括系统安装的旧版libzstd、低效的decompress()实现以及缓慢的输出缓冲区管理
- 性能分析发现超过50%的解压时间消耗在_BlocksOutputBuffer_Finish函数,表明输出缓冲区管理存在瓶颈
- 采用PEP 782提出的新PyBytesWriter API后性能显著提升,使compression.zstd在基准测试中反超zstandard模块
- 这项优化还惠及其他压缩模块(如zlib),对≥1 MiB的数据实现10-15%更快的解压速度
- 改进措施简化了输出缓冲区代码,在删除60行代码的同时提升了性能
- 未来工作包括进一步分析压缩代码的性能,并探索与输出数据大小信息相关的优化