Take the jpeg2000 release that holds one buffer a component - #97
Merged
Merged
Conversation
v0.12.0 dequantizes, synthesizes and converts the 9/7 coefficients in ONE buffer a component, where it held a float32 plane and an int32 plane of the same size beside each other. That is the reference's own arrangement: OpenJPEG gives a tile-component a single OPJ_INT32*, casts it to OPJ_FLOAT32* for the 9/7 synthesis, and converts in place. Decoding one codestream alone, peak RSS: a 5868x7885 grey scan 563 -> 397 MB, a 4559x6942 colour one 986 -> 638 MB. Over four releases the decoder has gone from 19.8 to 8.6 bytes a pixel on a grey page and 76.4 to 20.2 on a colour one. Nothing here changes: all 3215 documents of the measured corpus render byte-identically, rendered by exactly this pair.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
go-images/jpeg2000v0.12.0 dequantizes, synthesizes and converts the 9/7coefficients in one buffer a component, where it held a
float32plane andan
int32plane of the same size beside each other. That is the reference’s ownarrangement: OpenJPEG gives a tile-component a single
OPJ_INT32*(tcd.h),casts it to
OPJ_FLOAT32*for the 9/7 synthesis (dwt.c), and converts inplace (
tcd.c).Decoding one codestream and nothing else, minimum of three:
Over four releases the decoder has gone from 19.8 to 8.6 bytes a pixel on a
grey page and 76.4 to 20.2 on a colour one.
Nothing in this repository changes. All 3215 documents of the measured
corpus render byte-identically (0 different, 66 drawn by neither, population
floor 3000), rendered by exactly this pair, and the module in the cache was
diffed against the tree that was proved. The jpeg2000 suite is clean under
-race, which matters because the shared buffer is written by parallel EBCOTworkers.
Speed is not claimed:
glpi-agentwas at 94% of a core throughout, and a timingtaken under that describes the agent.
🤖 Generated with Claude Code