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