Skip to main content
Inspiring
May 22, 2011
Released

P: Better Develop Module Performance

  • May 22, 2011
  • 45 replies
  • 1031 views

On my machine (DELL E6400) adjusting the exposure of an image in the Develop module is more difficult than it should be because of the time lag between moving the slider and the image update.

I suggest a different strategy for generating visual feedback that yields better immediate performance, possibly trading in slight inaccuracies at first, but within a scheme that resolves the latter as soon as possible. Please see the end of this FR for the actual suggestion; I'd like to motivate it first.

It appears that the fixed order in which image operations are applied in the LR pipeline causes some adjustments to result in worse interactivity than necessary. Adjusting the exposure with no other (not even default) image adjustment settings is quick.

With some other image adjustments in place, however -- in particular when using the "Details" panel -- adjusting exposure results in jerky image updates that make it hard to find the correct level accurately and quickly.

I'm assuming that the LR image pipeline mandates that exposure updates happen relatively early, so that sharpening etc. always has to be recomputed after an exposure update. This is why updating the exposure is quick when no other adjustments have to be performed but slow otherwise.

Just to make sure that I'm making the correct assumptions, here's how I arrived at my conclusions:

My initial issue was that updates to the image in the Develop modules seemed to be slow and jerky in full screen mode whereas they were quick and led to smooth updates when I used LR in window mode. It turned out that the deciding factor is the size of the image. Images in portrait orientation are naturally displayed smaller and are less affected by the performance problems. Even images in landscape orientation can show smooth updates in full screen mode, if one artificially decreases their size by making the left hand side panels as wide as possible.

So it seems to me that:
a) LR struggles to deliver a decent image update frequency in the Develop module when the image is above a certain size (at least on my hardware).
b) This performance issue is a problem not only for computation intensive operations, like lens correction, but for simple ones like "exposure" because apparently potentially computation intensive operations, e.g., sharpening/noise reduction, come after exposure in the pipeline and have to be redone after each exposure update.
c) This is a big problem since I'd like to be able to apply some default sharpening on import (or even lens correction for some lenses) and not delay such settings after I have done other image adjustments in the Develop module.

It is clear to me that the user should not be forced to perform edits in a certain order (in addition to the aforementioned problems there is also a common advice to put off spot removals or lens corrections till the end) in order to address LR performance issues.

Here's the actual suggestion:

Could LR not cache all previous adjustments and apply the current image adjustment (e.g., exposure) as the last update in a relative manner?

I realise that this goes against the fixed ordering of the pipeline, but the latter is the problem causing the performance issues. When image operations are commutative they should be applied in the order which provides the best performance (with the use of caching, of course).

I also realise that some image operations (e.g., sharpening and exposure) only seem commutative but may not be completely commutative. It may matter (slightly) whether sharpening or exposure adjustments is performed first. Nevertheless, for the initial visual feedback, it should suffice in most cases to perform the current adjustment as the last and thus be able to capitalise on prior image caching.

Once the user stopped doing the adjustment, i.e., once there is no need to provide immediate visual feedback anymore, LR could recompute the current image using the standard image pipeline ordering. This may in some cases cause a subsequent, subtle change to the image after a short while, but I strongly believe I would prefer that if it meant that my current adjustments would just be a small delta to previous adjustments causing smooth updates rather than causing (almost?) the whole pipeline to be re-triggered.

Note that the proposed scheme would address the concerns regarding inaccurate image renderings in the Develop module. Noise reduction could always be performed, at all magnification levels, if it only impeded the speed of the final rendering -- after direct interactivity is no longer needed -- but would not impact on the interactivity of image adjustments that become before noise reduction in the image pipeline.

The proposed approach may even mean that using the adjustment brush on images with a high number of edits (including a multitude of previous brush strokes) may become more interactive. Currently, the lag between moving the mouse cursor and seeing the effect of the brush, becomes larger the more edits an image has. This may just point to caching potential regarding brushes (I hope not all strokes are always redrawn), but may also be related to the pipeline issue.

45 replies

Sean H [Seattle branch]
Known Participant
October 9, 2012
I do have a preset applied at ingestion. It boosts contrast a bit and adds shadow, reduces highlights, bumps sharpening. I do this so that the 1:1s are somewhat close when I do my first pass purging in the Library module. I'm working off of a 27" 2560x1440 monitor. I'll give the DNG a try. I had tried it in prior versions but found a ton of DNG corruption across a year's worth of work files so I reverted to using the native NEF. Maybe there could be an option for purity versus performance?
[ ◉"]
Participating Frequently
October 9, 2012
In answer to the original question, I'm sure there are ways to speed up the loading time. I don't remember off hand the original reasons for the hard line drawn between previews used in Library and Develop adjustment view. Most likely it is grounded in a (somewhat puritanical) mindset of ensuring Develop view only shows 100% genuine pixels or somesuch. I do know that DNG files created with more recent versions of Lightroom embed a proxy preview (I don't recall the name) that can accelerate Develop view loading significantly. The times you're describing (in combination with your high powered hardware) make me think there's some additional issue making the render time abnormally bad. Do you apply a default preset with dust spot corrections or extra sharpening that might take a long time to render? Also, do you have a multi-monitor or high resolution setup that might be causing it to do 1:1 or multiple renders when it loads? Just curious.
areohbee
Legend
October 9, 2012
Sean,

I couldn't agree more. The data that persists in honor of develop edit needs, is, lacking (ACR cache entries, (aka fast-load data if you're a DNG'r), are only marginally helpful). I'm not sure why, with the ingenious invention of the lossy-compressed reduced-rez DNG technology, Adobe didn't just gut the existing ACR cache technology and replace it with the jpeg-compressed raw data, maybe an option for how much reduced-rez. That way, one could always edit raws quickly. Follow-up with rendering the full-size/quality raw in the background, and caching that in RAM, (or temp-storage on disk) for instant access, and you'd be able to prepare for edit in subsecond times, instead of multi-second times. And that's just what this outsider can see. Probably Adobe could come up with something better - e.g. instant editing, always. - if they set their mind to it.

I like to think Adobe did what they could, and the reason there were virtually no changes to lib module, or dev performance, is because Adobe has some extensive redesign in store for Lr5, and so they didn't want to invest a bunch in code that was just going to be redone anyway. But don't start any rumours - I know nuthing...

Cheers,
Rob
Sean H [Seattle branch]
Known Participant
October 9, 2012
Something like this MUST be integrated. I feel like so much time in LR is me instantly seeing the need for an image fix (5,10,15 things) and waiting around for the UI to let me do it. It's 2012. It's time for some minority report like image editing if you know what I mean. LR5 should be a pure performance upgrade. Take out Maps, take out Books and let my 6-cores chew this software up.
[ ◉"]
areohbee
Legend
October 9, 2012
In my opinion, Lr4 was as big a leap over Lr3, as Lr3 was over Lr2, image-quality-wise, maybe even more-so, since Lr3 improvement was mostly in the finer details (e.g. mostly evident at 100% zoom), whereas Lr4 improvement is more evident across the board, even in condensed views. YMMV... - it has a definite personality which took me a long time to get used to - I'm talking about end-result as well as what it takes to get there.
areohbee
Legend
October 9, 2012
You are editing a lossy-compressed reduced-rez DNG.

You can learn more about that be reading the newly released DNG 1.4 spec.

In a nutshell, raw data is demosaiced, subsampled, and then compressed using jpeg compression, and packaged in a DNG that maintains all of the editing characteristics of the original raw, except loads & renders faster...

So the answer to your question is: "both", and/or "neither", depending on how you look at it... Perhaps somebody who understands the underlying technology better, could give you a better answer. But bottom line is, unless you zoom in and/or check resolution, you can't tell which one you are editing.
Sean H [Seattle branch]
Known Participant
October 9, 2012
I don't experience this issue nor can I remember ever having this issue in versions 2,3,4... I upgraded to LR4 and find the highlight recovery worth it by itself.
[ ◉"]
Sean H [Seattle branch]
Known Participant
October 9, 2012
So I'm editing a jpg render or am I rendered a subsampled RAW?
[ ◉"]
Inspiring
October 9, 2012
Related to Sean's comment, I'm frustrated by LR 3.6's failure to properly manage previews in the Develop module.

When I edit a series of images in the Develop module and then navigate back and forth between them, the preview always shows the unedited versions first. Very annoying! It makes a quick comparison between two edit images impossible because the display of the final versions is always interrupted by displays of the original versions.

In order to fix the above, I have to go to the Library module and flick through the respective images. After I've done that, previews in the Develop module will be shown correctly immediately.

I cannot say whether the annoying behaviour still exists in LR4. I haven't upgraded because I do not appreciate the philosophy behind the LR 4 basic panel controls and there was not sufficient added value overall. Maybe I'll upgrade to LR 5 but I'm currently planning to give LR4 a miss unless it is suddenly reported to have become a performance miracle.
areohbee
Legend
October 9, 2012
One option for the meantime, use:

EditInLightroom - allows one to edit lo-rez (pre-rendered) version of hi-rez raw files, much more quickly. (Settings to be applied to hi-rez version too, except you don't have to wait for reload/raw-rendering in dev module).

Rob