[LLVMdev] speed and code size issues

Jonathan Gray jsg at goblin.cx
Fri Jul 17 16:14:19 PDT 2009


So it would appear that llvm-gcc and clang are both slower than
gcc4 which is infamous for being slow at compiling code, and
yes this is with a release build/--enable-optimizations.

This seems to go against notes such as
http://clang.llvm.org/features.html#performance
which claim clang is signifcantly faster than gcc.

Below are some times and the larger object files when
compiling an i386 OpenBSD kernel at -O2 on an Intel Atom
based laptop.  The significantly larger code size
is rather disturbing as it means binaries can't fit on
space constrained installation media for example.

As the large object files appear with both llvm-gcc
and clang it would appear to be a problem with
the X86 backend.  Is this the expected behaviour at
this point?  There is quite a difference in code size
between llvm based compilers and pure GCC ones.

I'm happy to supply more configuration/object size details
if someone is interested.

=========================

clang 20070717 svn --enable-optimizations
clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/trunk 76176M)

text    data    bss     dec     hex
7412287 160516  1049460 8622263 8390b7
   19m4.11s real    16m56.35s user     1m44.23s system

-rw-r--r--  1 jsg  wsrc   122K Jul 18 01:41 if_spppsubr.o
-rw-r--r--  1 jsg  wsrc   127K Jul 18 01:36 aic79xx.o
-rw-r--r--  1 jsg  wsrc   130K Jul 18 01:46 pci_subr.o
-rw-r--r--  1 jsg  wsrc   161K Jul 18 01:38 bwi.o
-rw-r--r--  1 jsg  wsrc   349K Jul 18 01:47 isp_pci.o
-rwxr-xr-x  1 jsg  wsrc   7.9M Jul 18 01:54 bsd

=========================

gcc 3.3.5

text    data    bss     dec     hex
6358820 182268  1051044 7592132 73d8c4
   14m7.04s real    13m5.64s user     1m15.96s system

-rw-r--r--  1 jsg  wsrc  85.2K Jul 18 02:25 isp.o
-rw-r--r--  1 jsg  wsrc  97.5K Jul 18 02:26 bwi.o
-rw-r--r--  1 jsg  wsrc   100K Jul 18 02:24 aic79xx.o
-rw-r--r--  1 jsg  wsrc   124K Jul 18 02:32 pci_subr.o
-rw-r--r--  1 jsg  wsrc   350K Jul 18 02:32 isp_pci.o
-rwxr-xr-x  1 jsg  wsrc   6.9M Jul 18 02:38 bsd

=========================

gcc 4.2.4

text    data    bss     dec     hex
6373332 169212  1051044 7593588 73de74
   17m49.36s real    16m44.82s user     1m15.59s system

-rw-r--r--  1 jsg  wsrc  98.6K Jul 18 02:00 aic79xx.o
-rw-r--r--  1 jsg  wsrc  99.3K Jul 18 02:02 bwi.o
-rw-r--r--  1 jsg  wsrc   124K Jul 18 02:09 pci_subr.o
-rw-r--r--  1 jsg  wsrc   351K Jul 18 02:10 isp_pci.o
-rwxr-xr-x  1 jsg  wsrc   6.9M Jul 18 02:17 bsd

=========================

llvm-gcc 4.2.1 svn 20090717

gcc version 4.2.1 (Based on Apple Inc. build 5646) (LLVM build)

ld -Ttext 0xD0200120 -e start -N --warn-common -S -x -o bsd ${SYSTEM_OBJ} vers.o
text    data    bss     dec     hex
7235924 179256  1053092 8468272 813730
   18m4.05s real    16m35.42s user     1m35.06s system

-rw-r--r--  1 jsg  wsrc   118K Jul 18 01:12 if_spppsubr.o
-rw-r--r--  1 jsg  wsrc   124K Jul 18 01:16 pci_subr.o
-rw-r--r--  1 jsg  wsrc   125K Jul 18 01:07 aic79xx.o
-rw-r--r--  1 jsg  wsrc   159K Jul 18 01:09 bwi.o
-rw-r--r--  1 jsg  wsrc   349K Jul 18 01:17 isp_pci.o
-rwxr-xr-x  1 jsg  wsrc   7.8M Jul 18 01:24 bsd



More information about the llvm-dev mailing list