Hi,

 some month ago we decided to use lcms in version 1.14 for our color 
management. The quality of the
algorithms is very good and the results are more than satisfying. Our 
only problem was the
performance. Thus I analysed the code to find possiblities to help this 
problem. The main
perfomance issue is that all the functions take only the data of a 
single pixel as parameter. As
a result the complete callstack is build up for every pixel again. So my 
idea was to move the pixel
loop into the inner functions. This of course changes the signature of 
nearly all functions
except the interface itself. Nevertheless it was worth the time because 
the result is about
two times faster than the original (with MSVC 2003).
Another advantage of this change is that compilers could introduce SIMD 
code now (ISSE/2/3/4,
3DNow!, Altivec etc) to enhance the performance even more. I did not 
have the time to test this
with the Intel Compiler or with the IPP library. To do so it might be 
necessary to modify some
algorithms to make them streamable. In my experience performance boost 
of factor 10-40 is
possible by SIMD.
A second possibility to take advantage of modern processors would be 
multithreading. Unfortunately
there is no standard library for threads but OpenMP is an option. On the 
other hand users of
lcms could make their own threads and split their images in parts to be 
transformed in parallel.

Please let us know your opinion on this issue, lcms is really great, the 
results are "perfect", but performance is also important for us.


With regards

 Henning Stroeker

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to