【Rust日报】2024-12-09 内存安全的 PNG 解码器现在显著超越了传统 C 库的性能
💡
原文中文,约1100字,阅读约需3分钟。
📝
内容提要
内存安全的 PNG 解码器在性能上显著优于传统 C 库,Rust 的 png crate 在 x86 和 ARM 平台上分别快 1.8 倍和 1.5 倍。基准测试表明,内存安全实现通过流式解压和自动矢量化等优化策略,全面领先并已在生产环境中验证。
🎯
关键要点
- 内存安全的 PNG 解码器在性能上显著优于传统 C 库。
- Rust 的 png crate 在 x86 平台上比 libpng 快 1.8 倍,在 ARM 平台上快 1.5 倍。
- 基准测试显示内存安全的实现(png、zune-png、wuffs)在速度上全面领先于 C 的实现(libpng、spng、stb_image)。
- png crate 使用流式解压器 fdeflate,通过批量字节解码等优化策略提升性能。
- zune-png 和 wuffs 采用一次性解压整个图像的策略。
- png crate 依赖 Rust 编译器的自动矢量化,性能跨架构表现稳定。
- 其他库主要依赖手动编写的 SIMD 指令,导致不同架构上的表现不一致。
- Rust 的 png crate 已用于 image crate,显示其广泛的生产环境适用性。
- Chromium 浏览器正在试验用 Rust 的 png crate 替代 libpng。
- 内存安全的实现支持现代 PNG 功能,如 APNG、多种辅助块读取/写入。
- png 和 zune-png 已通过超过 10 万张图片的测试验证其稳定性。
- wuffs 在某些灰度图像处理上存在已知问题,但可能与配置有关。
➡️