Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 5.0.7
-
Fix Version/s: 5.1
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:any
Description
As part of the work done for PDF-332 we moved our colour conversion algorithms out into the RasterOps package. The various routines use the raster.getPixel() and raster.setPixel() which are very slow at accessing the data.
After doing some research is most more efficient way to get at the data is to access the DataBuffer's data array. Then go about the conversion as per usual.
In my test on a rather large JPEG image 700x9900 the raster op procedure for converting YCbCr to RB went from about 4 seconds down to 350ms. Apply this logic across our Raster Ops and Image masking algorithms seems like a no brainer as we're looking at some pretty nice performance enhancements.
After doing some research is most more efficient way to get at the data is to access the DataBuffer's data array. Then go about the conversion as per usual.
In my test on a rather large JPEG image 700x9900 the raster op procedure for converting YCbCr to RB went from about 4 seconds down to 350ms. Apply this logic across our Raster Ops and Image masking algorithms seems like a no brainer as we're looking at some pretty nice performance enhancements.
QA finally passed and I think the optimizations are finally stable. The good news is that an 3 page QA run has gone from 21 minutes to just 12 minutes which is close to a 70% improvement. This a major improvement for our image loading.