From 68da661db9fc7c29b0aab4b0b5f9d329bafc6c36 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Wed, 9 Sep 2020 10:08:46 +0300 Subject: [PATCH] Small optimisation: move distance==0 comparison to outer loop, to check once per call instead of once per pixel --- src/libImaging/Effects.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libImaging/Effects.c b/src/libImaging/Effects.c index e09f4e9a4..e0f1d0339 100644 --- a/src/libImaging/Effects.c +++ b/src/libImaging/Effects.c @@ -131,11 +131,15 @@ ImagingEffectSpread(Imaging imIn, int distance) } #define SPREAD(type, image)\ - for (y = 0; y < imOut->ysize; y++) {\ - for (x = 0; x < imOut->xsize; x++) {\ - if (distance == 0) {\ + if (distance == 0) {\ + for (y = 0; y < imOut->ysize; y++) {\ + for (x = 0; x < imOut->xsize; x++) {\ imOut->image[y][x] = imIn->image[y][x];\ - } else {\ + }\ + }\ + } else {\ + for (y = 0; y < imOut->ysize; y++) {\ + for (x = 0; x < imOut->xsize; x++) {\ int xx = x + (rand() % distance) - distance/2;\ int yy = y + (rand() % distance) - distance/2;\ if (xx >= 0 && xx < imIn->xsize && yy >= 0 && yy < imIn->ysize) {\