Anyone want to speed up a PNG decoder?

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/rust

Our great sponsors
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • JetBrains - Developer Ecosystem Survey 2022
  • Scout APM - Less time debugging, more time building
  • png-decoder

    A pure-Rust, no_std compatible PNG decoder

    I recently wrote a png-decoder for use in fontdue to parse emoji PNGs in a no_std context. I haven't yet put any effort into optimization, and from some basic benchmarks it seems the Wuffs implementation runs twice as fast.

  • image-png

    PNG decoding and encoding library in pure Rust

    I didn't get time to finish the full spec for my attempt at a PNG decoder but it was working on common cases and was faster than image-png at the time https://users.rust-lang.org/t/new-rust-png-decoding-library/30952. I suspect it's not the case anymore since it changes it's deflate crate usage. Here is the perf issue on the image crate https://github.com/image-rs/image-png/issues/114. My code was way simpler than the one in the image crate so that might still be worth a read if you are interested.

  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

  • thermite

    Thermite SIMD: Melt your CPU

    If I ever have the time to finish Thermite, I'd suggest that for this.

  • simd-adler32

    A SIMD-accelerated Adler-32 rolling hash algorithm implementation.

  • tiny-skia

    A tiny Skia subset ported to Rust

    I have a project called tiny-skia that uses SIMD heavily. The current AVX+SSE2 code is like 150KiB. Now add SSE2 and Scalar only versions and you can easily hit 300-500KiB. Not to mention the increased complexity.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts