> When decoding an uninterlaced 8-bit PNG image, the PNGImageDecoder is > basically copying one byte at a time. > > This PR uses System.arraycopy instead, and it shows approx a 10% improvement. > > This graph shows the time it takes different decoders to convert a byte array > into a BufferedImage as the size of the PNG image increases: > > <img width="596" height="366" alt="Screenshot 2025-12-27 at 9 14 19 PM" > src="https://github.com/user-attachments/assets/73583cb2-eda0-47a8-b818-735a1835f1e8" > /> > > (This originally came to my attention when looking at an image in Java 1.8. > There the ImageConsumer model took approx 400% longer than ImageIO. I was > happy to see in recent JDKs that gap narrowed significantly, but there was > still a noticeable 10% discrepancy.) > > I haven't tried submitting a performance enhancement PR before; I'm not sure > if this issue meets this group's threshold for being worth addressing. And if > it does: I'm not sure how to structure a unit test for it.
Jeremy Wood has updated the pull request incrementally with one additional commit since the last revision: 8374377: move jmh test to java/awt/image This is in response to: https://github.com/openjdk/jdk/pull/29004#issuecomment-3713285051 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/29004/files - new: https://git.openjdk.org/jdk/pull/29004/files/c609b00e..fbc8dc62 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=29004&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29004&range=03-04 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/29004.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/29004/head:pull/29004 PR: https://git.openjdk.org/jdk/pull/29004
