booh logo
this page is in english
cette page en fran├žais


[ home | example web-album | video demo | tutorial | advanced | discuss | download ]

Performance - web-album creation

To improve performance when creating thumbnails - a long and painful step when creating web-albums - Booh takes advantage of multi-processor machines.

The following figures were obtained on a P4 HT 2.8 GHz with Linux 2.6.6 SMP 4G (note that this is not a real SMP machine) with the same bunch of thumbnails to create:

    Regular    2:10.81 elapsed
    --mproc 2  2:01.44 elapsed  (0.928 Regular)

This is not bad, but clearly shows that an hyperthreading P4 is not a real SMP machine by far! Now let's try with a 6-CPUs Pentium-3 Cascades 700 MHz:

    Regular    2:58.07 elapsed
    --mproc 2  1:32.48 elapsed
    --mproc 3  1:03.34 elapsed
    --mproc 4  0:49.12 elapsed
    --mproc 5  0:40.86 elapsed
    --mproc 6  0:39.03 elapsed  (0.219 Regular)

Now this multi-processor support Booh has is not a toy feature.

More recent tests (not the same photos), on a Core i5 650 (dual core HT) 3.2 GHz with Linux x86_64:

    Regular    0:48.79 elapsed
    --mproc 2  0:27.87 elapsed
    --mproc 3  0:20.38 elapsed
    --mproc 4  0:16.96 elapsed  (0.347 Regular)

More recent tests (not the same photos), on a Core i7 3770 (quad core HT) 3.4 GHz with Linux 3.3.4 x86_64:

    Regular    1:18.21 elapsed
    --mproc 2  0:39.82 elapsed
    --mproc 3  0:27.49 elapsed
    --mproc 4  0:20.95 elapsed
    --mproc 5  0:17.88 elapsed
    --mproc 6  0:15.77 elapsed
    --mproc 7  0:13.93 elapsed
    --mproc 8  0:12.70 elapsed  (0.162 Regular)
    --mproc 9  0:12.66 elapsed

More recent tests (not the same photos), on a Core i7 7700T (quad core HT) 2.9 GHz (cpuinfo says it goes up to 3700 MHz) with Linux 4.13.3:

    Regular    0:39.49 elapsed
    --mproc 2  0:24.30 elapsed
    --mproc 3  0:19.48 elapsed
    --mproc 4  0:18.88 elapsed
    --mproc 5  0:17.49 elapsed
    --mproc 6  0:17.11 elapsed
    --mproc 7  0:17.05 elapsed
    --mproc 8  0:18.67 elapsed  

Performance - booh-classifier

A test has been conducted on a p4 2.8 GHz with 1G of memory running GTK+ 2.12.9: loading 134 3456x2304 photos coming from a Canon EOS 350D, worth a total of 396 MB. After all the files are in the file system's cache, the time to show a thumbnail for all the photos is measured with booh-classifier against other widely used programs:

Notice that also, gthumb and eog don't preload neighbourghood photos (konqueror neither, but that's not applicable anyway); eog is not capable of showing videos; and konqueror don't even show portrait photos (containing the proper EXIF orientation) correctly rotated - though I suspect it might be related to something with the compilation or the configuration which I wasn't able to locate.

Disk usage

To reduce disk space usage, web-albums including the original images use hard links between the original image in the source directory and the destination directory. Of course, this requires you use a single disk and partition for the source and destination directories; if this is not the case, the image is simply copied (that's fully transparent to the end-user).

Architecture and data processing

The web-album generating is fully done by a CLI program called booh-backend. It generates and/or manipulates an XML file. Editing is done by a graphical front-end (using GTK+) called booh. Therefore, one can generate a web-album with no editing (and actually no human input) only with the CLI program if necessary, or opposedly, only use the graphical program if so enclined (which is the easiest and recommended way). The use of the XML file in between allows for easy "scripting" or "extension" with any XML processing tool if needed. The XML file has a straightforward DTD and actually comprises a tree of elements similar to the filesystem tree of the web-album.


The web-album generated by Booh makes heavy use of javascript in order to be able to perform clever preloading of next/previous images, and to show all images within a single HTML page (saves a download and prevent from changing your scrolling position in the browser). It should work fine with the broken insecure dominant web-browser, but it has been developed using Galeon. Also, notice that the generated album is perfectly viewable without javascript (specific HTML pages are generated for that matter), hence javascript is not mandatory to browse the albums (a browser with javascript disabled will still be able to browse the albums).

The default theme, 'simple', has been written to be simple, slick and could probably look better (submissions welcome). It has several sizes of thumbnails and fullscreens, carefully crafted to fit the most out of 800x600, 1024x748, 1280x1024, 1400x1050 and 1600x1200 displays (you can select the list of sizes you want for your web-albums - then, when users browse the albums, a javascript autodetection of the best size to fit the actual browser window size is used). People interested in HTML/CSS are welcome to submit new themes - check out the file THEMES in the tarball for documentation about it.

If you want to create a new theme, or make local modifications to a theme, just have them in your ~/.booh-themes directory (Booh version 0.9.2 and more recent). For example, to hack off 'dark':

# mkdir ~/.booh-themes
# cp -a /usr/share/booh/themes/dark ~/.booh-themes/mine

Use a different name than original theme names (here I picked the dummy name 'mine', choose a better one).

Currently available themes: simple - gradient - cardu - dark - sbs.


Booh has full internationalization support. Additionally, Booh can generate web-albums with multi-languages navigation, so that the web-albums automatically adapt to the language of the user who's browsing! If missing, please contribute a translation to your native language! Check the directory 'po' in the download archive.

Booh is already available in french, german, japanese and esperanto (beside english, of course). english flag french flag german flag japanese flag esperanto flag

Wed Jun 1 17:53:58 2011