【Rust日报】内存安全的 PNG 解码器现在显著超越了传统 C 库的性能

科技   2024-12-15 23:18   四川  

内存安全的 PNG 解码器现在显著超越了传统 C 库的性能

核心要点:

  1. 性能表现

  • Rust 的 png crate 在 x86 上比 libpng 快 1.8 倍,在 ARM 上快 1.5 倍。
  • 使用了 QOI benchmark corpus 对多种实现进行了基准测试,测试结果显示内存安全的实现(pngzune-pngwuffs)在速度上全面领先于 C 的实现(libpngspngstb_image)。
  • 技术原理

    • png crate 依赖于 Rust 编译器的自动矢量化,而不是显式的 SIMD 指令。这种方法性能跨架构表现稳定,x86 平台上还结合了 stb_image 的过滤器实现。
    • 其他库(例如 zune-pngstb_image)则主要依赖手动编写的 SIMD 指令,导致其在不同架构上的表现不一致。
    • png crate 使用了流式解压器 fdeflate,通过批量字节解码等优化策略提升性能,同时支持流式解压以实现更广泛的适用性。
    • zune-pngwuffs 则采用一次性解压整个图像的策略。
    • DEFLATE 压缩
    • 过滤器优化
    • 适用性

      • Rust 的 png crate 已用于 image crate,显示其广泛的生产环境适用性。
      • Chromium 浏览器正在试验用 Rust 的 png crate 替代 libpng。
    • 生产就绪

      • 内存安全的实现支持现代 PNG 功能,如 APNG、多种辅助块读取/写入。
      • pngzune-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

      社区学习交流平台订阅:

      • Rustcc论坛: 支持rss
      • 微信公众号:Rust语言中文社区


      Rust语言中文社区
      Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
       最新文章