Details
-
Type:
New Feature
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.0
-
Fix Version/s: 5.0.0 alpha1, 5.0
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:ICEpdf
Description
Note from customer:
Please notice that the test program uses two threads to convert two identical PDF files here. If I use single thread to convert two PDF files sequentially, the comparison will success (image files are the same). If I save the converted images and open in Microsoft paint, I will see that one of the image is missing a chart.
Please notice that the test program uses two threads to convert two identical PDF files here. If I use single thread to convert two PDF files sequentially, the comparison will success (image files are the same). If I save the converted images and open in Microsoft paint, I will see that one of the image is missing a chart.
As part of the major refactoring for
PDF-319the handling of stream content has been reworked. When a stream is parsed the uncompressed stream bytes are stored and the file lock is removed. The Stream is then available for processing on a new thread. This work was also coupled with the removal of the memory manager in favor of Soft and Weak Reference model. From early testing three threads seems to be optimal for processing a document. Any more and the file locks tend to slow things down on an 4 core machine, new systems maybe able to do more.Another interesting refactor was to move image loading onto a new worker thread to avoid pausing the content parse while the image is decoded. The new ImageProxy will however block if paint is called before the image is fully decoded. So not true imageProxy but overall parse speed has been greatly improved for some image heavy documents.
Hopefully in the future we can take the rework a step further using NIO and avoid having to manage the file marker one thread at time.