Adobe Lightroom CC/6 Multi Core PerformanceWritten on May 12, 2015 by Matt Bach
When designing a computer there are literally thousands of different hardware components to choose from. Each one will affect the performance of your system in different ways and depending on the software you will be using some will be more important than others. In the case of Adobe Lightroom CC and Lightroom 6, one of the most critical hardware components is the CPU. Even then, there are still hundreds of different CPU models to choose from and each have their own unique specifications.
So the question is: how do you know which CPU will give you the best performance in Lightroom?
Before even attempting to answer this question, it is important to understand the two most basic CPU specifications:
- The frequency is how many operations a single CPU core can complete in a second (how fast it is).
- The number of cores is how many physical cores there are within a CPU (how many operations it can run simultaneously).
This doesn't take into account the differences between CPU architectures, but in an ideal world a CPU that has the same frequency but twice the number of cores would be exactly twice as fast. Unfortunately, making software utilize multiple cores (and do so effectively) is difficult in most situations and almost impossible in others. Add in the fact that higher core count CPUs tend to have lower operating frequencies and it becomes even more difficult to ensure that you are choosing the best possible CPU for your application.
In this article, we want to find out how well Lightroom can utilize multiple cores - known as multi-threading - to help determine what type of CPU (either one with a high frequency or a high core count) will give you the best possible performance. If you want to skip over our testing procedure and individual benchmark results and simply view our conclusions, feel free to jump ahead to the conclusion section.
To help us determine how many cores Lightroom CC and Lightroom 6 is able to use in a variety of situations, we performed a number of actions and timed how long each took with various numbers of CPU cores. These actions were chosen based on input from a number of our customers who use Lightroom professionally. In order to have a large amount of CPU cores available to help us determine exactly how well Lightoom is able to utilize multiple cores, we used the following hardware:
|Motherboard:||Asus Z10PE-D8 WS|
|CPU:||2x Intel Xeon E5-2687W V3 3.1GHz Ten Core|
|RAM:||8x Kingston DDR4-2133 8GB ECC Reg.|
|GPU:||NVIDIA GeForce GTX 980 4GB|
|Hard Drive:||Samsung 850 Pro 512GB SATA 6Gb/s SSD|
|USB Import Drive:||Kingston DataTraveler G4 USB 3.0 16GB|
|OS:||Windows 8.1 Pro 64-bit|
|PSU:||Antec HCP Platinum 1000W|
|Software:||Lightroom CC 2015|
Since we want to determine how many CPU cores Lightroom can effectively utilize, we are going to alter how many cores are available by setting the affinity for Lightroom in Task Manager. This way we can accurately benchmark Lightroom with anywhere from a single core to the full twenty cores available with this setup. To help with consistency - and since the benchmarks we performed ran for several days - we programmed a custom script using AutoIt to start Lightroom, set the CPU affinity, import the relevant images, perform the benchmark action three times, then clear the catalog and restart Lightroom to get ready for the next round of testing.
To analyze the data, we will be presenting our results in terms of how long it took each action to complete with the various number of CPU cores made available to Lightroom. From the results, we will also be using Amdahl's Law to estimate the parallel efficiency for the action (or how good at utilizing multiple CPU cores the software is). For more information on Amdahl's Law and how it works, check out our Estimating CPU Performance using Amdahl's Law article.
Importing Images from USB
Since importing images from a SD card, USB drive, or other external drive is often the very first thing you would do in Lightroom, we decided to start our testing there.
As you can see from the graph, the time it took to import our 80 RAW test images into Lightroom did not change at all based on the number of CPU cores available. However, this is the one action we tested where we do not believe the CPU was the main bottleneck. Instead, it appears that even with the fast Kingston USB 3.0 drive we used (which has a sequential read speed of about 120MB/s) the USB drive is what primarily limited performance. We are confident that importing is only single-threaded (we can determine that by watching the load % on each CPU core while importing the images), but using a CPU with a higher frequency is unlikely to improve the time it takes to import images unless you are comparing a very low-frequency CPU to a high-frequency CPU.
Exporting Images to Disk
Just like importing images, exporting them is something that any Lightroom user is going to do at some point. If you are exporting directly to a CD/DVD, the speed of the export is very likely to be limited by the speed of your optical drive. However, if you are exporting to a hard drive (either to upload to the internet, to email, or for storage) your CPU is likely going to be what limits the speed of the export.
Unlike importing, exporting is able to use a large number of CPU cores. Also unlike importing, we found that the drive you are exporting to actually has very little impact on how long it took to complete our test export. We tested a number of drives that had sequential write speeds ranging from just 80MB/s up to 1200MB/s and the difference between the slowest drive and the fastest was at most about 2%.
Because of this, the speed of the CPU is the main limiting factor when exporting images from Lightroom. Based on Amdahl's Law we were able to estimate the parallel efficiency of exporting images to be about .97 (97%) which means that it highly benefits from having a high core count CPU. However, one thing we will point out that isn't immediately obvious in the chart above is that once we started to utilize the second CPU (so from cores 11-20) the parallel efficiency dropped from .97 (97%) to about .5 (50%) which is not very good in terms of efficiency.
In other words, exporting images in Lightroom greatly benefits from higher core count CPUs, but only when you can get that high core count from a single CPU. Once you need a second CPU the benefits drop dramatically. The reason for this is not entirely clear, but our best guess is that is has something to do with the fact that once a second CPU is involved some data needs to go across the QPI link (which is how the two CPUs "talk" to each other) which introduces an additional bottleneck.
Convert from RAW to DNG
After you have imported images into Lightroom, you may want to covert them from RAW to DNG which - depending on the number of images you have - can take quite a while:
Converting to DNG definitely sees a benefit from having multiple CPU cores, but the efficiency is only about .69 (69%). Just like exporting images, the benefit from having more cores is greatly reduced once you start utilizing a second physical CPU. In this case, however, instead of just reducing the parallel efficiency we saw absolutely no benefit to having a second CPU.
Due to the lower efficiency, the best CPU for converting images to DNG is actually going to be one with between four and eight CPU cores with a relatively high (3.5GHz+) frequency.
Generate 1:1 Previews
1:1 previews are extremely useful to have if you often zoom into images while in the Library module to see if the image is in focus or not. Without 1:1 previews, when you zoom into an image it can take Lightroom 3-5 seconds or even longer to load the full-sized RAW or DNG image. With the previews already generated, however, it is much faster - often taking less than a second to load the image.
While the curve of this graph looks very similar to the one from converting images to DNG, the efficiency is actually a bit higher at approximately .77 (77%). The efficiency actually drops a bit once you hit about 5 CPU cores, but not by enough to really impact your choice of CPU. This parallel efficiency of .77 is one of the highest we found in Lightroom (with only exporting images being higher). It is high enough that an eight or ten core CPU would be useful, although with any fewer cores you will still want to prioritize a CPU with a high frequency.
Generate Smart Previews
While Smart previews are not 100% necessary to use in Lightroom, they are great if you are using a laptop (or even a desktop) that is often disconnected from the external storage that has your images.
Unlike generating 1:1 previews, generating smart previews has a fairly low parallel efficiency of approximately .51 (51%). Again, we see no benefit from having a second CPU, although with this low of efficiency you are likely to hit the point of there being no measurable benefit to having that many CPU cores before you even think about needing a second CPU.
Create HDR Image
While easy to do, creating HDR photos is actually a multi-step process in Lightroom. After you have selected the photos you want to merge, you first need to wait for the preview to generate. After that, you can adjust any settings you want changed then actually create the HDR photo.
In the chart above, you can see that generating the preview (the blue line) actually takes much longer than actually creating the HDR photo (the red line). Generating the photo has a parallel efficiency of about .56 (56%) while creating the HDR photo has an efficiency of about .75 (75%). Combining these two steps (the green line) results in an overall efficiency of approximately .6 (60%) while performing the entire HDR photo creation process.
Just like the previous tests, adding a second CPU did absolutely nothing to improve performance. In fact, in the case of HDR photo creation adding a second CPU actually increased the time it took to create an HDR photo by an average of about 5%.
Create Panorama Image
Creating a panorama photo is something Adobe just added to Lightroom CC and Lightroom 6 so we were very interested to see how it performed. Just like creating an HDR photo it has two distinct steps - generating the preview and creating the new panorama image.
In this case, generating the preview (the blue line) is much faster than creating the panorama photo (the red line) which is exactly the opposite of what we saw with creating a HDR photo. Also, both these steps have a lower parallel efficiency than anything else we tested with the exception of importing images. Generating the preview had a parallel efficiency of about .47 (47%) while creating the photo was only about .41 (41%). Combining these two together results in an overall efficiency of only about .44 (44%) which means a CPU with a high operating frequency (as long as it has 2-3 cores) is going to give you the best performance when creating a panorama photo .
In addition to native support for creating panorama photos, the latest version of Lightroom (CC and 6) also added support for facial recognition. To test this, we timed how long it took Lightroom to detect a total of 116 faces from a collection of 32 images.
While there was a benefit to having two CPU cores, the benefit completely disappears after that point. In fact, we calculated the parallel efficiency to be just .2 (20%) which is pretty much nothing. In other words, the number of CPU cores you have is going to play almost no role in how long it takes Lightroom to detect faces in photos.
Based on our testing, there are two major conclusions we can come to regarding the multi-threading capabilities of Lightoom CC and Lightroom 6:
- Lightoom does not work well with multiple physical CPUs. When exporting photos, you do see a benefit from having a second physical CPU, but the efficiency drops like a rock. In most other cases you simply do not get a benefit from having multiple physical CPUs and for some actions like creating HDR and panorama photos you may actually see a small (~5%) drop in performance. This isn't as bad as we have seen in other applications like Photoshop where saw a 30-50% drop in performance with multiple CPUs, but we can safely say that multiple-CPU configurations are not ideal for Lightroom.
- Lightroom has a mix of single, light, and heavily threaded components. The parallel efficiency of the actions we tested ranged from nonexistent, to moderate, to fairly good. This makes it very difficult to determine a single CPU that will give you the best overall performance in Lightroom.
(higher is better - 1 is perfect)
|Importing images from USB||0|
|Exporting images to disk||.97|
|Convert from RAW to DNG||.69|
|Generate 1:1 Previews||.77|
|Generate Smart Previews||.51|
|Create HDR image||.6|
|Create Panorama image||.44|
Most of the actions we tested have a fairly low parallel efficiency (below .7 or 70%). They still benefit from having more cores, but in most situations a CPU with a lower core count but higher operating frequency will give you the best performance. However, exporting images - which pretty much any Lightroom user is going to do - has a very high parallel efficiency which means a CPU with a high core count will allow you to export images faster. This means that the best CPU for you is going to depend on exactly what actions in Lightroom you regularly find yourself waiting on.
If you find that the only thing you are ever waiting on is exporting images to a disk, then a CPU with a high core count will likely give you the best performance. However, the more time you spend waiting on almost anything else in Lightroom makes a lower core count, high frequency CPU better and better in terms of performance. If your workflow just consists of importing images, converting them the DNG, creating 1:1 Previews, then exporting half of them to a disk, the overall parallel efficiency (based on our testing) works out to be about .75 or 75%. Based on this, the Intel Xeon E5-1680 V3 3.2GHz Eight Core 20MB 140W CPU would be a great choice being about 6% faster than the Intel Core i7-4790K.
Once you start adding in other tasks like creating panorama or HDR photos, the balance shifts away from a high core count CPUs towards higher frequency CPUs. If you were to import your photos, convert them to DNG, generate Smart previews, create 8 HDR and 2 panoramas photos, then export only a handful of photos (say 10% of the total you imported) the overall parallel efficiency drops to about .57 (57%). At that point, the CPU that would give you the best overall performance would actually be the Intel Core i7 4790K 4.0GHz Quad Core 8MB 88W. This CPU only costs about $400 so in addition to being the fastest CPU for that use-case will also save you quite a bit of money which you could then spend on other aspects of the computer like faster storage or more RAM.
Which CPU is best for you is going to depend on a number of factors including what you do in Lightroom, what other programs you use, which chipset you want to use and how much system RAM you need. The Intel Core i7 4790K is by far the most affordable of the four CPUs and while it may be slower for exporting photos than the other CPUs for almost anything else in Lightroom it will actually be the fastest. However, the chipset it uses can only have at most 32GB of system RAM. This is more than enough for Lightroom, but if you use other programs that need more RAM it may not be the best choice for you.
If you need more RAM, one of the other CPUs may be a better option. The Xeon E5-1680 V3 is a good choice if you hate waiting for exports to finish while the Xeon E5-1650 V3 or Core i7-5930K (which have identical performance) are both very balanced options.