Fix cache thrashing for large images #106
Open
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.
cfImageCropconstructs a new image with the default tile cache size. This create disastrously bad performance on large images.For example, calling
imagetorasteron an ARCHE sized page (36x48 inches, 21600 pixels wide) takes over 300s before this patch, all of which is in libc_read and libc_write. The cache size is 10 tiles, but the required cache size is actually about 900-1000 tiles. With the patch, the temp image correctly inherits a bigger cache (that was sized using the image width), and that same invocation costs 40s.