Iterator benchmark

Kai-Uwe Behrmann ku.b at gmx.de
Wed Jun 10 16:05:37 CEST 2009


> Date: Tue, 9 Jun 2009 19:22:25 +0200
> From: Sven Langkamp <sven.langkamp at gmail.com>

> On Tue, Jun 9, 2009 at 1:40 PM, Kai-Uwe Behrmann <ku.b at gmx.de> wrote:
>>> Date: Mon, 8 Jun 2009 22:46:32 +0200
>>> From: Sven Langkamp <sven.langkamp at gmail.com>
>>
>>> I have commited a first version of the iterator benchmark we dicussed
>>> yesterday. It basically iterates over a paint device without doing
>> memcpys.
>>> The results are as we expected:
>>>
>>> -HLine- and VLineIterator perform quite similar.
>>> -the rect iterator about 10% faster than hline
>>> -the random accesor is about 40% slower than hline
>>
>> Could you give some numbers of iterator access/modification in pixel per
>> seconds for a non Krita developer.
>
>
> The benchmark is pretty simple and you should be careful with the actual
> numbers. The values change a bit with different system load.
> It's just measure how long it takes an iterator to iterate over each pixel
> paint device without doing a memcpy. Colorspace is RGB 8.
>
> Running it on a Core Duo 2GHz  I get:
>
> HLineIterator 12,5 MPixel/sec
> RectIterator 15,3 MPixel/sec
> RandomIterator 8 MPixel/sec
>
> With doing a memcpy I get:
>
> HLineIterator 5.8 MPixel/sec
>
>
> I curious how that compares to other implementations.


For comparision lcms is included:
oyConversion_RunPixels( oyPixelAcce.  212766 Pixel/s .. SUCCESS
cmsDoTransform() lcms                  1.33 MPixel/s .. SUCCESS
..........
cmsCreateTransform() lcms                 15 xform/s .. SUCCESS
..........
+ oyConversion_RunPixels()              5882 Pixel/s .. SUCCESS
oyNamedColour_SetColourStd()            1961 Pixel/s .. SUCCESS


"oyConversion_RunPixels( oyPixelAcce." is a run through a simple graph (3 
nodes) with a call to lcms including 2 memcpys.
"cmsDoTransform() lcms" is a plain colour transformation.
"cmsCreateTransform() lcms" creates a colour context.
"+ oyConversion_RunPixels()" is a expensive graph generation + context 
lookup and call through the graph.
"oyNamedColour_SetColourStd()" is like above but twice incluse image 
wrappers and profile lookup.

With 2 nodes and no lcms Oyranos comes to
oyConversion_RunPixels (2 nodes)      526316 Pixel/s .. SUCCESS

So you implementation appears to run ~10 times faster than mine :-)
which is not good for per pixel access through Oyranos :-(

kind regards
Kai-Uwe Behrmann
-- 
developing for colour management 
www.behrmann.name + www.oyranos.org



More information about the kimageshop mailing list