Blogs
In recent days, some of the engineers at Liferay reported some amazing performance gains with Liferay's Ant build system by using Linux instead of Windows. Well this peaked my curiosity to say the least. I've been working exclusively with Windows XP on my desktop since around 2001, and have only used with Linux on servers -- never for my desktop. Well I'm a former Solaris / IRIX / DecUnix / HP-UX guy and so I decided to give Linux a try on the desktop.
I tried Fedora 7 first, but received a "too many open files" error when I tried to compile Liferay Portal with the "ant all" command. I tried messing with the limits.conf file but still wasn't able to get it working.
So I tried Ubuntu and I didn't receive the "too many open files" error. Woo hoo! BTW, I've got the Nvidia XGL driver going along with the Compiz Fusion window manager. Liferay developer James Min wasn’t kidding when he wrote to me “OS X, Vista... Watch out!” COMPIZ FUSION IS TOTALLY OUT OF CONTROL WAY COOL!!! Check out this movie to see for yourself. I’ve got the desktop cube thing working between Remote Desktop to Windows and Linux. I'm loving it! (On a semi-related side note, the IntelliJ IDEA user interface has a limitation where you can only open one project at a time. With virtual desktops, I might be able to work-around this limitation by having an IntelliJ project open on each virtual desktop.)
Well back to the Ant build system performance issue... Here are my unscientific test results -- not sorted, just grouped according to hardware:
| Test# | Machine | Hard Disk | OS | JDK | Compiler | Build Time |
|---|---|---|---|---|---|---|
| 1 | Pentium M 1.8 Ghz | 7200RPM | Windows XP | Sun JDK 1.4 | Jikes | 8 minutes, 30 seconds |
| 2 | Pentium M 1.8 Ghz | 7200RPM | Windows XP | Sun JDK 5.0 | Jikes | 3 minutes, 52 seconds |
| Note that by changing JDK from 1.4 to 5.0 made the build go more than 2x faster on Windows XP |
||||||
| 3 | Pentium M 1.8 Ghz | 7200RPM | 32-bit Ubuntu 7.04 | Sun JDK 1.4 | Jikes | 2 minutes, 54 seconds |
| 4 | Pentium M 1.8 Ghz | 7200RPM | 32-bit Ubuntu 7.04 | Sun JDK 5.0 | Jikes | 2 minutes, 7 seconds |
| Note that the change from JDK 1.4 to 5.0 on Ubuntu made the build go 1.5x faster (which is significant), but less-so than on WinXP |
||||||
| 5 | Intel Core 2 Duo T7800 2.6Ghz | 7200RPM | 32-bit Windows Vista | Sun JDK 5.0 | ECJ | 6 minutes, 22 seconds |
| 6 | Intel Core 2 Duo T7800 2.6Ghz | 7200RPM | 32-bit Windows Vista | Sun JDK 5.0 | Jikes | 4 minutes, 38 seconds |
| 7 | Intel Core 2 Duo T7800 2.6Ghz | 7200RPM | 32-bit Windows Vista | Sun JDK 6.0 | Jikes | > 11 minutes! |
| Note that the performance disaster here *may* have something to do with some kind of incompatibility Java 6 and Ant. That's my best guess, anyhow. |
||||||
| 8 | Intel Core 2 Duo T7600 2.4Ghz | 7200RPM | 64-bit Ubuntu 7.10 | Sun JDK 5.0 | Jikes | 2 minutes, 23 seconds |
| 9 | Intel Core 2 Duo T7600 2.4Ghz | 7200RPM | 64-bit Ubuntu 7.10 | Sun JDK 5.0 | ECJ | 3 minutes, 35 seconds |
Conclusions for Fastest Performance:
- Use JDK 5.0 and not 1.4 or 6.0 due to performance problems
- Use Linux instead of Windows
- 32-bit Linux is somehow a little faster than 64-bit Linux. Puzzling? (compare test#4 and #8). this leads me to believe that the only remaining bottleneck is the speed of the disk -- so we have to wait for bigger solid-state drives I guess
- Use Jikes instead of ECJ
- Note that Jikes doesn't support some of the new language features of JDK 5.0. Liferay source is based on JDK 1.4 so compiling with Jikes should be fine until we start taking advantage of some of these new language features
BTW, Many thanks to Michael Young for showing us all how to make the ECJ compiler work with Ant to build Liferay. Copying the ejc.jar file to Ant’s “lib” folder did the trick for me. See: LEP-4273

