Apple’s new Aperture program is awesome. It’s easily the best image cataloging program available, and it’s in version 1. However, the performance leaves quite a bit to be desired. Here are the things I’ve discovered.
I used a combination of the fs_usage tool and the Thread Viewer tool to profile Aperture. Both excellent tools are included in the Developer package. I wanted to find out why it always takes 10 seconds for the search filter dialog to open up, causing the application to become unresponsive the entire time.
The results point to the database implementation. Aperture uses a SQL database to store information about the images in the library. Apple chose to use SQLite, probably because it’s easy to embed into an application and doesn’t require any additional setup. The following image demonstrates the problem with it:
It appears that Aperture is performing a database query to decide which buttons to show in the filter hud. This is perfectly reasonable and should happen nearly instantaneously. It doesn’t. As I mentioned earlier, one of my projects contains just over 600 images and it takes 10 seconds to open the dialog. I’ve confirmed that the keywords are the main problem by opening the dialog in a project with a similar number of non-keyworded images with minimal lag.
SQLite Command Reference
Apple Performance Analysis Tools