From: Richard H. <hug...@gm...> - 2013-05-14 08:20:46
|
On 14 May 2013 00:32, Robin Watts <rob...@ar...> wrote: > Before you dive into the complexities of multithreading etc, it would > seem sensible to ensure you are getting the best possible performance > out of the transform routine in the first place. Makes sense. > LCMS has various different transform routines built in; by using a > cunning scheme, it can pick the appropriate one at runtime. If there > happens to be one in its repertoire that exactly fits your needs, it can > run considerably faster than if it has to use a generic one. Other than profiling, how do we know if it's chosen a built-in version rather than the generic version? > To speed ghostscripts use of lcms2, I wanted to optimise the transforms > that we use as much as possible. But we use quite a lot of them, and I > didn't want to have to hand write optimised ones for all of the > different cases. So I implemented a system that uses a chameleonic > header; set a few options with #defines, and include the header, and it > makes the optimised transform function for you. I see, https://github.com/robinwatts/Little-CMS/blob/artifex/src/cmsxform.h -- that looks pretty magic, is there no way to do that without the #preprocessor trickery? > He did however point out that I could recast the code slightly as a > plugin for lcms 2. This gives the same benefits without polluting the > internals of the library itself. I plan to do this at some point, but I > have not got round to it yet. Yes, that would be awesome. Thanks, Richard. |