ICEpdf
  1. ICEpdf
  2. PDF-801

Optimization of get/set/Pixel() methods calls.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major 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.

        Activity

        Patrick Corless created issue -
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42507 Thu Sep 04 15:37:04 MDT 2014 patrick.corless PDF-801 optimized image data access using (src.getDataBuffer()).getData()
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/YCbCrRasterOp.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42524 Mon Sep 08 12:54:30 MDT 2014 patrick.corless PDF-801 optimization of get/setPixel with direct access to image data array.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/DeviceCMYK.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/ICCBased.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/PColorSpaceRasterOp.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/DecodeRasterOp.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/YCCKRasterOp.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/GrayRasterOp.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/RasterOps/CMYKRasterOp.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/Separation.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42531 Tue Sep 09 10:40:59 MDT 2014 patrick.corless PDF-801 updated explicit mask method for applying fill colors.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/ImageUtility.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42532 Tue Sep 09 10:48:50 MDT 2014 patrick.corless PDF-801 removed debugging statements.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/ImageUtility.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42533 Tue Sep 09 12:31:40 MDT 2014 patrick.corless PDF-801 touched up applyExplicitMask exceptions.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/ImageUtility.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42536 Tue Sep 09 15:34:08 MDT 2014 patrick.corless PDF-801 reverting back to old masking method as it actually faster then the double band copy.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/ImageUtility.java
        Hide
        Patrick Corless added a comment -

        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.

        Show
        Patrick Corless added a comment - 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.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42568 Tue Sep 16 15:10:11 MDT 2014 patrick.corless PDF-801 fixed static colour table caching issue.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/ICCBased.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42569 Tue Sep 16 15:11:20 MDT 2014 patrick.corless PDF-801 updated comments
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/DeviceCMYK.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42573 Wed Sep 17 08:15:35 MDT 2014 patrick.corless PDF-801 touched up cachign mechanisms for different band sizes.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/ICCBased.java
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/Separation.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #42574 Wed Sep 17 08:42:47 MDT 2014 patrick.corless PDF-801 touched up cachign mechanisms for different band sizes.
        Files Changed
        Commit graph MODIFY /icepdf/branches/icepdf-5.0.1/icepdf/core/src/org/icepdf/core/pobjects/graphics/Separation.java
        Hide
        Patrick Corless added a comment -

        Update all of our methods. And we are looking at 30-40% improvement on our image decoding.

        Show
        Patrick Corless added a comment - Update all of our methods. And we are looking at 30-40% improvement on our image decoding.
        Patrick Corless made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 5.1 [ 10675 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #43592 Mon Nov 24 14:06:04 MST 2014 patrick.corless PDF-801 removal of tagging library.
        Files Changed
        Commit graph DEL /icepdf/trunk/icepdf/core/src/org/icepdf/core/tag
        Patrick Corless made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Patrick Corless
            Reporter:
            Patrick Corless
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: