A large part of the cost of using PNG is the cost of compressing/decompressing with DEFLATE. The current best DEFLATE implementation (as measured by performance) is probably libdeflate which is a SIMD implementation. However, libdeflate does not support streams (for somewhat obvious reasons). libspng uses streams extensively internally, which is far more flexible, but limits our ability to use libdeflate.
If we rearchitected key parts of libspng, we could use libdeflate and probably get a significantly faster implementation.
A large part of the cost of using PNG is the cost of compressing/decompressing with DEFLATE. The current best DEFLATE implementation (as measured by performance) is probably libdeflate which is a SIMD implementation. However, libdeflate does not support streams (for somewhat obvious reasons). libspng uses streams extensively internally, which is far more flexible, but limits our ability to use libdeflate.
If we rearchitected key parts of libspng, we could use libdeflate and probably get a significantly faster implementation.