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