On 27.02.2005, at 01:04, Sven Neumann wrote:

I have eliminated last_visited from the gradient struct. Instead the
caller of gimp_gradient_get_color_at() may now do the same
optimization without any caching in the gradient itself. I very much
doubt that this makes any difference though. Perhaps if you would
benchmark a gradient blend with a lot of segments. But in the general
case it's just a few of them, very often even only a single one.

Now that this race condition is eliminated I might look into adding
hooks to the pixel-processor to allow initialisation of per-thread
data, like for example a GRand.

Your change dramatically changed the picture.

Instead of:
Linear Gradient blend on a 3000x3000 pixel image (Dithering on)
1 processor:            7.5 s
2 processors:           9.6 s
4 processors:           9.6 s

Linear Gradient blend on a 3000x3000 pixel image (Dithering OFF)
1 processor:            3.0 s
2 processors:           2.5 s
4 processors:           2.5 s

I now get: Linear Gradient blend on a 3000x3000 pixel image (Dithering on) 1 processor: 7.2 s 2 processors: 8.9 s

Linear Gradient blend on a 3000x3000 pixel image (Dithering OFF)
1 processor:            2.5 s
2 processors:           1.5 s

However dithering on is still loosing quite a bit on this SMP
machine....

Servus,
      Daniel

Attachment: PGP.sig
Description: This is a digitally signed message part



Reply via email to