Hasty Briefsbeta

双语

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行代码的同时提升了性能
  • 未来工作包括进一步分析压缩代码的性能,并探索与输出数据大小信息相关的优化