~ 2 Dec 2010, 01:40
I've released yet another version of my gallery editor/generator AGG. It is mostly a bugfix and optimization release. The major bug that prompted this release is: when you process a huge gallery on a lot of threads (e.g., two 4-core Nehalem-based Xeons, resulting in 16 "cores"), the working memory gets awfully fragmented, and malloc()s start to fail (you get NULLs) - because it can't allocate the large contiguous regions needed to store the pixel data. In 0.2.5, the images are stored using lots of small chunks.
There are some optimizations as well: I'm using libjpeg-turbo for decoding/encoding JPEGs, and also did a rehaul of the resizing algorithms. Another major thing is the 64-bit support (there are 64-bit builds for Windows and Linux). See here for a more detailed change list.
Some performance figures: while the new libjpeg and the resizer optimizations are significant by themselves, the convoluted image storing reorganization (creating a mess in the memory due to data fragmentation) offset the performance win by some margin, so I did some real-life tests to assess how is the new version scores, compared to 0.2.4. So here is it: on a dualcore laptop, a 325-image 8 MPix gallery is produced in 2m 11s (as opposed to 2:28 for 0.2.4), which is a 12% win. On my other (six-core) machine, there is no performance difference between 0.2.4 and 0.2.5 (64-bit), but I think it's the disk throughput that is the bottleneck there ;)