Improving performance

There are several ways to tweak jAlbum's settings to gain to signficantly faster album builds. Follow this guide for a faster jAlbum experience.

Use hardware accelerated image scaling

ImageSettingsAdvanced.png
Settings >> Images >> Advanced

Scaling images takes up the majority of the time spent during an album build. (The loading of large images is another time eater).

Modern computers usually have very powerful graphics processors (GPUs). Instead of letting your main CPU do the job of scaling images, let the GPU do it! Here's how: Open jAlbum settings, then go to the Images panel >> Advanced. This reveals a couple of more settings. Now tick the "Attempt to use hardware accelerated scaling" checkbox.



MakeAll.png
"Make all" will force jAlbum to rescale all images

To test if there is a difference, click the small arrow of the "Make album" button and click the "Make all" menu item in the popup menu that shows. This forces jAlbum to rescale all images. jAlbum normally tries to avoid rescaling already processed images, but in this case you want to force it to rescale them so you can compare speed.

jAlbum will measure the speed of album builds and print timing data to its System console window (Tools->System console). You can keep this window open for convenience. On my MacBook Pro I gain a 100% performance improvement using hardware accelerated scaling so I always keep it checked. How much you gain naturally depends on your GPU and on scaling method used. The speed gain is more noticeable when using the "Smooth" than the "Medium" scaling method but that's just because "Smooth" is also the slowest of the scaling methods.

You should now compare the quality of the scaled images with and without hardware accelerated graphics. The reason this feature isn't checked by default is because some (older) graphics cards don't produce very good results. Most modern graphics cards do a great job so I assume you wish this to be a default setting. To make jAlbum remember this setting for future album projects, use File->Save as default.

Use Medium scaling method

ScalingMethod.png
Settings >> Images >> General. Changing the scaling method.

jAlbum has three image scaling methods: Fast, Medium and Smooth in the "Images" settings panel. The Fast option is using a primitive algorithm called "nearest neighbor interpolation". It was previously by far the fastest, but produces rather jagged results with no siginficant speed gain today so don't use it.

"Smooth" is the slowest of the scaling alternatives, but guaranteed to be the most careful of them. It currently uses an "area averaging" algorithm if you don't use hardware accelerated scaling, and a "bilinear interpolation" algorithm if you use hardware accelerated scaling. To improve the performance of this scaling method jAlbum does the scaling in multiple steps, scaling to 50% of the previous size until the image is less than twice the requested size. Then it is finally scaled to the final size. Note, this "scaling in steps" is only done with hardware accelerated scaling" checked.

"Medium" is the scaling alternative I recommend. It tries to strike a good balance between performance and quality. It was the first of the settings to use the "scaling in multiple steps" technique that you now also find in the "Smooth" alternative. The only thing that differ between "Medium" and "Smooth" today (if you use hardware accelerated graphics) is how images are loaded. As I said in the introduction, loading images is also time consuming and also takes up a lot of RAM memory. The "Medium" scaled addresses this by only loading every second or third pixel from the original image. This only happens if the original image is significantly larger than the resulting image. With "Medium" you therefore get the most noticeable performance gains for really large original images (12 megapixel and up). Skipping every second pixel may sound like a drastic move, but most images aren't that sharp that it matters and most don't carry such high contrasted frequencies either (like the tiles on a roof top). Experiment if you're uncertain. For my needs, I stick with "Medium".


Use several processing threads

NumerOfThreads.png
Changing the number of threads in Preferences

If you press CTRL + , (control and comma) you will see jAlbum's preferences window. Here there is a setting called "Number of threads". It determines how many images and slide pages will be processed simultaneously. If you have several CPUs or CPU kernels, jAlbum senses this and allows you to determine how many of these to use during album builds. Why not use all? Well, scaling two images simultaneously takes up twice as much RAM as scaling one at time, and so forth.


Use "Process only updated subdirectories"

ProcessUpdatesSubD.png
Settings >> Advanced >>General "Process only updated subdirectories"

If you have really large albums consisting of several sub folders (subdirectories), then you may find that the sheer work of re-processing album pages is time consuming. If you only made a change to a subfolder of such a large album, then ticking "Process only updated subdirectories" under Advanced album settings can have a HUGE impact on the album build time.

With this option set, jAlbum compares file dates between the image directory tree and the album tree, and only processes subdirectories in the image directory tree having a more recent "last modified date" than in the album tree.

Note: As this option makes jAlbum skip some page processing, it can lead to confusing results when you for instance switch skin, so don't keep this setting on by default and only use it for large album projects where you gain a real speed benefit.