内存安全的 PNG 解码器现在显著超越了传统 C 库的性能
内存安全的 PNG 解码器现在显著超越了传统 C 库的性能
核心要点:
-
性能表现:
- Rust 的
png
crate 在 x86 上比 libpng 快 1.8 倍,在 ARM 上快 1.5 倍。 - 使用了 QOI benchmark corpus 对多种实现进行了基准测试,测试结果显示内存安全的实现(
png
、zune-png
、wuffs
)在速度上全面领先于 C 的实现(libpng
、spng
、stb_image
)。
- Rust 的
-
技术原理:
- DEFLATE 压缩:
png
crate 使用了流式解压器 fdeflate,通过批量字节解码等优化策略提升性能,同时支持流式解压以实现更广泛的适用性。zune-png
和wuffs
则采用一次性解压整个图像的策略。
- 过滤器优化:
png
crate 依赖于 Rust 编译器的自动矢量化,而不是显式的 SIMD 指令。这种方法性能跨架构表现稳定,x86 平台上还结合了stb_image
的过滤器实现。- 其他库(例如
zune-png
和stb_image
)则主要依赖手动编写的 SIMD 指令,导致其在不同架构上的表现不一致。
- DEFLATE 压缩:
-
适用性:
- Rust 的
png
crate 已用于image
crate,显示其广泛的生产环境适用性。 - Chromium 浏览器正在试验用 Rust 的
png
crate 替代 libpng。
- Rust 的
-
生产就绪:
- 内存安全的实现支持现代 PNG 功能,如 APNG、多种辅助块读取/写入。
png
和zune-png
已通过超过 10 万张图片的测试验证其稳定性。wuffs
在某些灰度图像处理上存在已知问题,但可能与配置有关。
这表明,现代内存安全的实现不仅安全性高,还能在性能上赶超甚至超越传统内存不安全的 C 实现。
https://www.reddit.com/r/rust/comments/1ha7uyi/memorysafe_png_decoders_now_vastly_outperform_c/
硬核Rust学习材料
这哥们儿用心整理了硬核版Rust学习材料,大家作为进阶可以关注。
https://security.humanativaspa.it/an-offensive-rust-encore/
--
From 日报小组 Mike
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论