Linux vs Windows, x86 vs x86_64

Introduction:

I bought a new computer this summer, and it was my first computer with a 64-bit processor. I got a great deal on it. The system came with an Athlon 64 3200+ (socket 754), 256MB DDR 400, 160GB SATA hard drive, and was running Windows XP Home. I really wasn't interested in keeping WinXP Home on the system, because I wanted to take advantage of the 64-bit processor in a 64-bit OS. I also didn't feel like spending another $90 to upgrade Windows XP to the x86-64 edition.

But before I set the system up for it's daily desktop duties, I figured it would be best to benchmark the system in a variety of configurations, and share the results with everyone. Here are the main configurations I'm going for:

System Configuration:

SystemOperating SystemProcessorRAMVideo Card
Windows (Barebones)WinXP HomeAthlon 64 3200+256MB DDR400Onboard SiS GPU
Windows (Upgraded)WinXP HomeAthlon 64 3200+1024MB DDR400GeForce FX5200 128MB
Linux 32-bitFedora Core 4 (x86)Athlon 64 3200+1024MB DDR400GeForce FX5200 128MB
Linux 64-bitFedora Core 4 (x86_64)Athlon 64 3200+1024MB DDR400GeForce FX5200 128MB

Testing methodology:

I conducted the tests in the following manner. I bought a Compaq Presario SR1010Z from CompUSA, and the configuration it was purchased in was with 256MB RAM, and onboard video. It was preloaded with Windows XP Home. All the tests were run on the system in that state for the WinXP (Barebones) set of scores. The system was then upgraded to 1GB RAM and I added a GeForceFX 5200 (both of which were acquired from NewEgg.com). The benchmarks were all then run again and recorded as WinXP (Upgraded). These results can be compared with each other to determine how dramatic of an improvement can be gained from those simple upgrades.

I then installed Fedora Core 4 32-bit on the system, and ran into major problems when trying to install the latest NVidia drivers. With the NVidia drivers, the system would freeze trying to start X windows. I bought a new motherboard for the system (with a VIA chipset), and then tried the installation again, and everything worked fine this time. I don't believe the motherboard swap will make a significant difference in my testing. The benchmarks were all run again (duplicating the procedures for the Windows machines as closely as possible) on this configuration, and the results were recorded as Linux 32-bit.

Finally, the last setup was Fedora Core 4 64-bit. I did this one last because I wanted to use the system in this configuration after my testing was complete as my regular desktop system. The benchmarks were run the final times on the system in this configuration and the results were recorded as Linux 64-bit.

My testing process consisted of me running most benchmarks twice, and then averaging the results together. The exceptions were benchmarks that took a very long time to run (like DivX encoding), and those tests were only run once. The Windows benchmarks were run from Cygwin (except for the games which have built in benchmarking utilities).

Benchmark64-bit versionExecution methodNotes
UT 2004 Demo 640x480YesShell scriptDifficulties getting the 64-bit version to work, may not actually be running the 64-bit code
UT 2004 Demo 1280x1024YesShell scriptDifficulties getting the 64-bit version to work, may not actually be running the 64-bit code
Quake 3 Demo 640x480NoGraphics set to normal. Resolution at 640x480. Open console, type in "timedemo 1" and then "demo demo001".
Quake 3 Demo 1280x1024NoGraphics set to High Quality. Resolution at 1280x1024. Open console, type in "timedemo 1" and then "demo demo001".
Lame MP3 encodingYeslame -b 192 input.wav output.mp3Windows version used Lame that came with Cygwin. For both Linux systems, Lame was built from source. Source file was ripped from Motely Crue: Greatest Hits before the test.
OGG encodingYesoggenc input.wav -o output.oggWindows version used oggenc that came with Cygwin. For both Linux systems, OGG was built from source. Source file was ripped from Motley Crue: Greatest Hits before the test.
DivX encodingYesmencoder input.mpeg -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2000 -o output.aviSource files was MPEG-2 capture created by recording Top Gear with Beyond TV using Hauppauge PVR TV-Tuner card
GZip compressionYestime tar -czvf compresssed.tar.gz input.wav
RAR compressionNotime ./rar a compressed.rar input.wav


Game/Graphics Benchmark Results:

Unreal Tournament 2004 Demo - 640x480

WinXP (Barebones)17.2 fps17.2 fps
WinXP (Upgraded)62.51 fps62.51 fps
Linux 32-bit72.4 fps72.4 fps
Linux 64-bit37.74 fps37.74 fps
Higher is better

Unreal Tournament 2004 Demo - 1280x1024

WinXP (Barebones)6.43 fps6.43 fps
WinXP (Upgraded)23.89 fps23.89 fps
Linux 32-bit36.58 fps36.58 fps
Linux 64-bit11.56 fps11.56 fps
Higher is better

I had a difficult time getting UT 2004 to run on Fedora Core x86_64 edition, and I'm not even sure if it was it was in 32 or 64 bit mode. The 32-bit Linux version beat the windows version by a significant amount. Linux was 15% faster at 640x480, and 53% faster at 1280x1024.

Quake 3 - 640x480

WinXP (Barebones)73.75 fps73.75 fps
WinXP (Upgraded)255.55 fps255.55 fps
Linux 32-bit196.2 fps196.2 fps
Linux 64-bit203.85 fps203.85 fps
Higher is better

Quake 3 - 1280x1024

WinXP (Barebones)21.3 fps21.3 fps
WinXP (Upgraded)71.9 fps71.9 fps
Linux 32-bit69.7 fps69.7 fps
Linux 64-bit66.00 fps66.00 fps
Higher is better

Quake 3 is a 32-bit only game. WindowsXP beats the 32-bit Linux by 30% at the low resolution (high CPU load), but only by 3% at the higher resolution.


Compression/Data Processing Benchmark Results:

LAME MP3 encoding

WinXP (Barebones)49.95 s49.95 s
WinXP (Upgraded)46.41 s46.41 s
Linux 32-bit54.71 s54.71 s
Linux 64-bit57.82 s57.82 s
Lower is better

This is where the benchmarks get more interesting. Lame was compiled from source, so the 64-bit OS gets to use a 64-bit binary. Windows is the fastest, beating the 32-bit Linux binary by a healthy 18%, and the 64-bit binary is slower than the 32-bit version by an additional 6%.


OGG Vorbis Encoding

WinXP (Barebones)61.39 s61.39 s
WinXP (Upgraded)60.38 s60.38 s
Linux 32-bit62.95 s62.95 s
Linux 64-bit45.59 s45.59 s
Lower is better

Oggenc was another application built from source on the Linux machines. The difference between the Lame and Ogg benchmarks are substantial. Windows beats out the Linux 32-bit binary by a smaller margin that it did encoding MP3, by only 4%. The fastest way to encode this time around is with the 64-bit binary which is 32% faster than the Windows version, and 38% faster than the 32-bit Linux version.

DivX Video Compression (MPlayer mencoder)

WinXP (Barebones)911.2 s911.2 s
WinXP (Upgraded)803.7 s803.7 s
Linux 32-bit841.7 s841.7 s
Linux 64-bit862.47 s862.47 s
Lower is better

Compressing an MPEG-2 video to DivX was fastest on the Windows machine, completing the task 5% faster than the 32-bit Linux machine. The 64-bit mencoder doesn't get any advantage in this benchmark, and the 64-bit binary finishes 2% slower than the 32-bit binary.


GZip Compression

WinXP (Barebones)16.75 s16.75 s
WinXP (Upgraded)12.98 s12.98 s
Linux 32-bit14.91 s14.91 s
Linux 64-bit13.21 s13.21 s
Lower is better

GZip (which is the last of my benchmarks that is compiled from source on Linux) also shows an improvement from the transition from 32-bit to 64-bit. The Windows version is still fastest, 15% faster than the 32-bit Linux version. The 64-bit Linux version is 13% faster than the 32-bit Linux version, but still trails behind the 32-bit Windows version.


WinRAR compression

WinXP (Barebones)44.49 s44.49 s
WinXP (Upgraded)40.89 s40.89 s
Linux 32-bit40.05 s40.05 s
Linux 64-bit42.84 s42.84 s
Lower is better

WinRar is only available as a 32-bit binary, so the 32-bit version runs 7% faster than the 64-bit OS can run it. The Linux 32-bit version is slightly faster than the Windows version, compressing the file 2% faster.



Conclusions:

When comparing Windows performance vs Linux performance, the results are pretty mixed, but overall tend to favor Windows. UT2004 and RAR compression being the only 2 benchmarks that favored Linux. For most tests, the performance was fairly close. The tests also show that all the benchmarks improved significantly when more RAM and an AGP video card was added to the system, but that is not really a surprise. Games benefited the most running 4x as fast.

The 32 vs 64 bit tests showed some more interesting results. I question the UT2004 results, and don't consider those results to be totally accurate. All applications that were 32-bit, ran slightly slower in the 64-bit OS, but the penalty wasn't significant. Performance was very close in all cases (ranging from 4-7%). Applications recompiled with 64-bit binaries sometimes produced significant gains. OGG vorbis encoding improved 38%, and GZip compression improved 13%.