Why does Lightroom export three batches of 100 photos more quickly than one batch of 300? It's a matter of programming priorities.
Earlier this month, I encountered an Adobe Photoshop Lightroom analysis by consultant Lloyd Chambers that expressed surprise with a facet of the image editing and cataloging software: it didn't export photos as fast as possible.
Chambers found that if a photographer wants to produce JPEG or TIF images from the originals in the program, the fastest way is to divide the batch into thirds and export each third separately. Using a modern Mac Pro system, exporting a test set of photos took 351 seconds as one batch and 189 seconds divided into three batches running at the same time.
"The big disappointment is the sluggish performance importing and exporting files, which are tasks that are key to efficient workflow--tasks one has to do over and over. Most of the 'juice' of a Mac Pro goes untapped," Chambers concluded. "You have to load it up with more than one job to force more of the available CPU cores to be used. Lightroom should do this automatically!"
The study caught the attention of others, including Scott Kelby, head of the National Association of Photoshop Professionals. I was intrigued, too, because although many programming chores are difficult to spread across multiple processor cores, exporting photos is trivially easy since it breaks conveniently into independent bite-sized pieces. So I thought I'd see what Adobe had to say for itself.
According to Lightroom Product Manager Tom Hogarty, it's a consequence of Adobe's design priorities:
Lightroom receives numerous compliments because it does indeed stay responsive when background tasks are running. Now as Lloyd's article points out there is headroom in our export processing, but in our prioritization of performance enhancements there is a focus on interactive performance improvements like scrolling through your images during a review process or developing slider responsiveness. That's not to say that the "set it and forget it" tasks like batch exporting aren't important. We just need to balance our efforts at performing well on a wide range of hardware and in a number of workflow scenarios without focusing too much on just utilizing every available resource of a specific configuration.
Initially I misunderstood that to mean Lightroom doesn't max out the machine so that the software is still responsive, but he wrote back with this clarification:
What we haven't done is optimized the multiprocessor performance of that code because there are other, higher priority areas of performance that have needed attention during previous product development cycles. Utilizing more system resources without impacting the responsiveness of the software or other activities on a photographer's computer is not a simple task, and as you mentioned in one of your comments, you couldn't remember being annoyed by the performance of the export process. Similar feedback from our customers is what informs our prioritization process. For some customers this lack of export processing optimization is a "sin of omission" but what other area of performance or functionality would they trade for that improvement?
I for one often use Lightroom to edit, tag, and otherwise handle photos while it's importing or exporting, so I appreciate a balance between interactive tasks and background tasks. But often I go away and come back when a job is finished, because interactive performance does take a hit.
Perhaps in the next update, Adobe could add a "maximum performance" option to the export or import dialog boxes--or even better, detect automatically those times when I left the computer on its own to finish up.