GCC vs. LLVM/Clang Compilers On ARMv7 Linux

Written by Michael Larabel in LLVM on 9 May 2012 at 12:35 PM EDT. 3 Comments
LLVM
While comparing compiler performance of different Linux code compilers on different software stacks and hardware configurations is nothing new at all to Phoronix, usually it's done on x86 hardware. However, with ARM hardware becoming increasingly common and much more powerful, here's a comparison of the GCC and LLVM/Clang compilers on a dual-core ARM development board.

This latest ARMv7 Linux benchmarking builds upon the Ubuntu 12.04 ARM benchmarks shared on Monday of the PandaBoard ES with its OMAP4460 dual-core Cortex-A9 SoC. The Texas Instruments hardware was running with 1GB of RAM and 16GB SDHC storage. The results today are using Ubuntu 12.04 with its ARMv7 Linux 3.2 kernel and comparing the performance of GCC 4.6 and LLVM/Clang 3.0 as found in the Ubuntu 12.04 Precise repository.
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
With CacheBench, when built by GCC 4.6 on the OMAP4460 on the device itself, the binaries were much faster than the ones produced by LLVM/Clang 3.0 except for the pure write test.
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
LLVM/Clang on ARM was also much slower for the C-written SciMark than using the Apple-sponsored Clang.
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
TSCP at least didn't lose as badly when built by Clang. 7-Zip also performed more closely between these two popular compilers.
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
N-Queens finally produced a win for LLVM/Clang.
Ubuntu 12.04 LTS ARMv7 LLVM Clang 3.0 vs. GCC 4.6 Compiler
LLVM/Clang still doesn't have support for OpenMP. More result data from this GCC vs. LLVM/Clang compiler comparison on ARM can be found on OpenBenchmarking.org (though ignore the Fortran FFTE test that accidentally slipped in there). LLVM/Clang on this dual-core OMAP4460 SoC was much less competitive than GCC 4.6, though it will be interesting to do this comparison with GCC 4.7 and the forthcoming LLVM/Clang 3.1. I'll also run some compiler benchmarks from the quad-core NVIDIA Tegra 3 ARM tablet.

On the ARM side, there is great interest with LLVM/Clang. Qualcomm is even trying to use Clang to build an ARM Linux kernel and other software with the LLVM-based compiler rather than GCC. Going forward the ARM Clang performance on Linux should certainly improve.

For some x86 compiler comparison numbers, see the AMD FX-8150 Bulldozer results and a comparison earlier this week of LLVM/Clang 3.0/3.1 vs. GCC 4.6/4.7 compiler four-way.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week