[sdiy] GCC vs Clang for Audio DSP

Eric Brombaugh ebrombaugh at gmail.com
Wed May 4 21:20:13 CEST 2022


In a previous thread we had some exchanges about the performance of 
various compilers used in embedded ARM applications. I've been using GCC 
for this over the course of the last decade and had seen some remarkable 
improvements in its performance so I was somewhat surprised that it was 
viewed as being substantially underperforming in comparison to the 
proprietary toolchains based on LLVM/clang.

I decided to try for myself and put together a quick DSP benchmark 
that's representative of the sort of stuff that I often do in my 
embedded work. I took some time to create build scripts for clang and 
test out both the free and proprietary versions to compare them against 
GCC for both execution speed and binary size. the results are 
interesting so I summarized them with tables and charts over here:

https://github.com/emeb/f303k8_nucleo

The quick summary is that based on this one example it appears that 
recent builds of GCC are not grossly out of line with the performance of 
Clang in both the free and proprietary flavors. For all levels of 
optimization greater than -O0 GCC performs roughly as well if not better 
than either version of Clang. This test also shows very little 
difference between the free and proprietary versions of Clang.

I would like to emphasize that this is one particular use-case and by no 
means representative of the performance you'd see in all applications of 
these compilers. It does however provide an alternative viewpoint backed 
by hard evidence to the notion that GCC is generally sub-standard and 
not for professional use.

If you have questions about the methodology I used here, the entire 
source and build scripts are available at that github repo for your 
inspection. I will admit that I'm not a clang power-user so there may be 
some optimizations that I've overlooked and I'd appreciate any 
suggestions on how to make this analysis more complete.


More information about the Synth-diy mailing list