Just a thought. We have encountered problems with the lens module when it comes to tiling. Root cause are issues with the modify_roi_in() function in lens.c. Tiling doesn't play a role here but the size of buffer that modify_roi_in() calculates has a direct effect on processing time.

I haven't digged into all details then but I assume that this part could be relevant:

    // LensFun can return NAN coords, so we need to handle them carefully.
    if(!isfinite(xm) || !(0 <= xm && xm < orig_w)) xm = 0;
    if(!isfinite(xM) || !(1 <= xM && xM < orig_w)) xM = orig_w;
    if(!isfinite(ym) || !(0 <= ym && ym < orig_h)) ym = 0;
    if(!isfinite(yM) || !(1 <= yM && yM < orig_h)) yM = orig_h;

So in effect we request the whole image buffer for input if a NAN is detected. This is a safe fallback but it will lead to a longer processing time. Please also note that the section

    xm = MIN(xm, bufptr[k + 0]);
    xM = MAX(xM, bufptr[k + 0]);
    ym = MIN(ym, bufptr[k + 1]);
    yM = MAX(yM, bufptr[k + 1]);

is not robust when it comes to NAN. If there is a NAN found in bufptr the final output is implementation dependant. fminf() and fmaxf() would be better alternatives.

As a quick check the TO could check if PR #1338 has effects on the timing.

Ulrich


Am 12.11.2016 um 23:01 schrieb [email protected]:


On Sat, Nov 12, 2016, at 03:52, Roman Lebedev wrote:

Please try adding 2 following lines:
fprintf(stderr, "%s roi in %d %d %d %d\n", self->name(), roi_in->x,
roi_in->y, roi_in->width, roi_in->height);
fprintf(stderr, "%s roi out %d %d %d %d\n", self->name(), roi_out->x,
roi_out->y, roi_out->width, roi_out->height);

For 2.0.x, here:
https://github.com/darktable-org/darktable/blob/darktable-2.0.x/src/iop/denoiseprofile.c#L1384

And for master, here
https://github.com/darktable-org/darktable/blob/master/src/iop/denoiseprofile.c#L1789
AND here 
https://github.com/darktable-org/darktable/blob/master/src/iop/denoiseprofile.c#L1800

And repeat that -d perf, zoom to 1:1 and move around.

Logfiles attached. I just patched 2.0.7 and the release candidate, if I need to 
actually pull from current master, let me know, but it might not happen until 
after the weekend.


____________________________________________________________________________
darktable user mailing list
to unsubscribe send a mail to [email protected]

Reply via email to