Hello Jennifer and Phil,

could you please review a fix for CR 8005530?

CR:  http://bugs.sun.com/view_bug.do?bug_id=8005530
Webrev:http://cr.openjdk.java.net/~bae/8005530/webrev.00/

This fix improves performance of ColorConvertOp.filter()
operation in case of lcms. The fix can be divided into
three separate changes:

* provide support for custom component images in
  LCMSImageLayout.
  This change affects the case of conversion to default
  destination.

* provide a way to process whole image, instead of
  scan-by-scan processing, if both source and
  destination images do not contain padding samples
  (i.e. next scan starts immediately after previous).

* increase optimization level for lcms library from
  LOW to HIGHEST. This change affects both new and
  standard build systems.

A benchmark comparison below illustrates the increase
of performance:

Options common across all tests:
  testname=cmm.colorconv.ccop.op_img
  cmm.colorconv.ccop.ccopOptions.srcType=BYTE_3BYTE_BGR
  cmm.colorconv.ccop.ccopOptions.content=photo
  cmm.opts.profiles=1001

cmm.colorconv.ccop.ccopOptions.dstType=BYTE_3BYTE_BGR,cmm.colorconv.ccop.ccopOptions.size=250:
OpenJDK Baseline: 0.152008134 (var=1.02%) (100.0%)
*************************************|
*************************************|
*************************************|
OpenJDK Fix: 0.245116358 (var=2.0%) (161.25%)
*************************************|**********************
*************************************|**********************
*************************************|*********************
cmm.colorconv.ccop.ccopOptions.dstType=BYTE_3BYTE_BGR,cmm.colorconv.ccop.ccopOptions.size=4000:
OpenJDK Baseline: 0.914826498 (var=0.41%) (100.0%)
***************************|
***************************|
***************************|
OpenJDK Fix: 0.001310043 (var=2.24%) (221.48%)
***************************|********************************
***************************|********************************
***************************|********************************
cmm.colorconv.ccop.ccopOptions.dstType=COMPATIBLE_DST,cmm.colorconv.ccop.ccopOptions.size=250:
OpenJDK Baseline: 0.060737151 (var=1.57%) (100.0%)
***************|
***************|
***************|
OpenJDK Fix: 0.242736486 (var=1.53%) (399.65%)
***************|*******************************************
***************|********************************************
***************|********************************************
cmm.colorconv.ccop.ccopOptions.dstType=COMPATIBLE_DST,cmm.colorconv.ccop.ccopOptions.size=4000:
OpenJDK Baseline: 0.559251559 (var=0.7%) (100.0%)
*******|
*******|
*******|
OpenJDK Fix: 0.001306904 (var=1.05%) (838.16%)
*******|***************************************************
*******|****************************************************
*******|****************************************************

Summary:
  OpenJDK Baseline:
    Number of tests:  4
    Overall average:  0.053373173444166644
    Best spread:      0.41% variance
    Worst spread:     1.57% variance
    (Basis for results comparison)

  OpenJDK Fix:
    Number of tests:  4
    Overall average:  0.12261744826137347
    Best spread:      1.05% variance
    Worst spread:     2.24% variance
    Comparison to basis:
      Best result:      838.16% of basis
      Worst result:     161.25% of basis
      Number of wins:   4
      Number of ties:   0
      Number of losses: 0

Thanks,
Andrew

Reply via email to