[Lcms-user] Source Code with Performance Improvements Available
An ICC-based CMM for color management
Brought to you by:
mm2
|
From: Noel C. <NCa...@Pr...> - 2017-08-01 12:02:44
|
As you may have guessed from my recent list eMails, I've been looking at Little CMS performance over the past few days. I have improved Little CMS performance some overall through changes to the C source code. This expands on the warning reduction changes I worked up before, so Marti, if you haven't reviewed that code yet, you can put it aside and just check the changes with this code base against your Git repository: http://Noel.ProDigitalSoftware.com/temp/LittleCMSOptimizations20170801.z ip Just one file has changed since my last submission: cmsintrp.c Measured performance, via the testbed, as built with Visual Studio 2017's C++ compiler: The code built from the above zip file, 64 bit: 16 bits on CLUT profiles : 38.7409 MPixel/sec. 8 bits on CLUT profiles : 32.9897 MPixel/sec. 8 bits on Matrix-Shaper profiles : 66.6667 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 121.212 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 66.6667 MPixel/sec. 16 bits on Matrix-Shaper profiles : 38.7409 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 137.931 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 38.7409 MPixel/sec. 8 bits on curves : 89.3855 MPixel/sec. 16 bits on curves : 94.1176 MPixel/sec. 8 bits on CMYK profiles : 14.5455 MPixel/sec. 16 bits on CMYK profiles : 14.5985 MPixel/sec. 8 bits on gray-to gray : 124.031 MPixel/sec. 8 bits on gray-to-lab gray : 125 MPixel/sec. 8 bits on SAME gray-to-gray : 124.031 MPixel/sec. Git trunk as of 7/28, 64 bit: 16 bits on CLUT profiles : 34.4086 MPixel/sec. 8 bits on CLUT profiles : 32.2581 MPixel/sec. 8 bits on Matrix-Shaper profiles : 66.6667 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 117.647 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 66.1157 MPixel/sec. 16 bits on Matrix-Shaper profiles : 34.3348 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 137.931 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 34.4086 MPixel/sec. 8 bits on curves : 88.8889 MPixel/sec. 16 bits on curves : 94.1176 MPixel/sec. 8 bits on CMYK profiles : 11.9048 MPixel/sec. 16 bits on CMYK profiles : 11.9581 MPixel/sec. 8 bits on gray-to gray : 103.896 MPixel/sec. 8 bits on gray-to-lab gray : 105.263 MPixel/sec. 8 bits on SAME gray-to-gray : 104.575 MPixel/sec. Release 2.8 64, bit: 16 bits on CLUT profiles : 34.4828 MPixel/sec. 8 bits on CLUT profiles : 32.3887 MPixel/sec. 8 bits on Matrix-Shaper profiles : 66.6667 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 121.212 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 66.6667 MPixel/sec. 16 bits on Matrix-Shaper profiles : 34.4828 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 126.984 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 34.4828 MPixel/sec. 8 bits on curves : 88.8889 MPixel/sec. 16 bits on curves : 94.1176 MPixel/sec. 8 bits on CMYK profiles : 11.9671 MPixel/sec. 16 bits on CMYK profiles : 12.012 MPixel/sec. 8 bits on gray-to gray : 105.263 MPixel/sec. 8 bits on gray-to-lab gray : 105.263 MPixel/sec. 8 bits on SAME gray-to-gray : 104.575 MPixel/sec. The code from the above zip file 32 bit: 16 bits on CLUT profiles : 28.2686 MPixel/sec. 8 bits on CLUT profiles : 24.6914 MPixel/sec. 8 bits on Matrix-Shaper profiles : 51.7799 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 78.4314 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 51.6129 MPixel/sec. 16 bits on Matrix-Shaper profiles : 28.2686 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 94.6746 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 28.2686 MPixel/sec. 8 bits on curves : 63.745 MPixel/sec. 16 bits on curves : 71.7489 MPixel/sec. 8 bits on CMYK profiles : 11.3395 MPixel/sec. 16 bits on CMYK profiles : 11.4204 MPixel/sec. 8 bits on gray-to gray : 83.7696 MPixel/sec. 8 bits on gray-to-lab gray : 84.2105 MPixel/sec. 8 bits on SAME gray-to-gray : 84.2105 MPixel/sec. Git trunk as of 7/28 32 bit: 16 bits on CLUT profiles : 27.1186 MPixel/sec. 8 bits on CLUT profiles : 24.2424 MPixel/sec. 8 bits on Matrix-Shaper profiles : 51.7799 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 78.4314 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 51.7799 MPixel/sec. 16 bits on Matrix-Shaper profiles : 27.1186 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 94.6746 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 27.1186 MPixel/sec. 8 bits on curves : 64 MPixel/sec. 16 bits on curves : 71.7489 MPixel/sec. 8 bits on CMYK profiles : 10.7889 MPixel/sec. 16 bits on CMYK profiles : 10.7817 MPixel/sec. 8 bits on gray-to gray : 79.2079 MPixel/sec. 8 bits on gray-to-lab gray : 79.2079 MPixel/sec. 8 bits on SAME gray-to-gray : 73.0594 MPixel/sec. Release 2.8 32 bit: 16 bits on CLUT profiles : 27.1186 MPixel/sec. 8 bits on CLUT profiles : 24.5776 MPixel/sec. 8 bits on Matrix-Shaper profiles : 51.7799 MPixel/sec. 8 bits on SAME Matrix-Shaper profiles : 75.4717 MPixel/sec. 8 bits on Matrix-Shaper profiles (AbsCol) : 51.7799 MPixel/sec. 16 bits on Matrix-Shaper profiles : 27.1647 MPixel/sec. 16 bits on SAME Matrix-Shaper profiles : 94.6746 MPixel/sec. 16 bits on Matrix-Shaper profiles (AbsCol) : 27.1647 MPixel/sec. 8 bits on curves : 56.5371 MPixel/sec. 16 bits on curves : 63.4921 MPixel/sec. 8 bits on CMYK profiles : 10.7239 MPixel/sec. 16 bits on CMYK profiles : 10.8181 MPixel/sec. 8 bits on gray-to gray : 83.3333 MPixel/sec. 8 bits on gray-to-lab gray : 82.9016 MPixel/sec. 8 bits on SAME gray-to-gray : 82.9016 MPixel/sec. |