-
Notifications
You must be signed in to change notification settings - Fork 628
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reintroduce single cache for successive scanline reads #1899
Conversation
Previously we allowed multiple threads to cache but that caused memory bloat, here, only keep one so successive reads will be faster for compression types where there are more than one scanline per chunk Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
Thanks, this greatly helps opening speed in GIMP. Tested and clocked opening 3 exr images created in Darktable:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, except does it break the ABI?
abipkgdiff
reports that it detects data members that have changed sizes.
I think this might be a flawed process for detecting ABI changes. This patch doesn't change any public headers. The class whose size is changing is totally internal. There ought to either be an explicit list of these classes and functions to exclude from ABI checks, or better yet, enclose all of them in a private namespace so they can be excluded in one fell swoop. |
The public ABI does not change with this, as this is in the pImpl internal class. However, is declared as a private struct within the public class such that there can be a non-void pointer in the public class. We could make it an empty struct type and derive a truly private subclass in a namespace, but would add a bunch of casts or double pointer for little gain? Detecting ABI changes is a bit fraught, and so I think at best it should just be reviewed manually and not something to be relied upon automated testing for - a simple equal-size typedef change can trigger an apparent abi difference, even though not actually any different. |
for the next release (3.4 or 4.0), I would like to take another review of public / private symbols as there are a lot of "utility" classes exposed that should not really be part of the public interface (although have been, so will need to go through a deprecation period), perhaps there is a different way we could achieve this such that abi diff tools can better ignore (i.e. making the pImpl class as a hidden class might work?) |
Previously we allowed multiple threads to cache but that caused memory bloat, here, only keep one so successive reads will be faster for compression types where there are more than one scanline per chunk Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
Previously we allowed multiple threads to cache but that caused memory bloat, here, only keep one so successive reads will be faster for compression types where there are more than one scanline per chunk
Fixes #1887