[sdiy] GCC vs Clang for Audio DSP
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:
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