[cfe-dev] clang builds chromium

Nico Weber thakis at chromium.org
Wed Oct 13 10:08:22 PDT 2010


Hi,

as of clang r116145, clang successfully builds all of chromium
(browser & test binaries) in both Debug and Release configurations.
The resulting browser binary even seems to work. Thank you for fixing
our bug reports so quickly! :-)

We have a continuous clang builder on both linux and mac, to make sure
our code stays clang-compatible, linked from
http://code.google.com/p/chromium/wiki/Clang . If you're interested in
which compiler flags we use, you can look at the compile step output:
http://build.chromium.org/buildbot/waterfall.fyi/builders/Chromium%20Mac%20Debug%20Clang/builds/795/steps/compile/logs/stdio
(the flags are slightly different for mac and linux).


Here are some random initial comparisons with gcc:


Build time

I built chrome.xcodeproj (i.e. just the browser) and all.xcodeproj
with both clang and gcc in both Debug and Release configurations and
measured the compile times, three times each. Results:

Building chrome with clang in Debug [1]
real	40m28.591s
real	39m51.426s
real	39m44.070s

Building chrome with gcc in Debug
real	44m55.732s
real	45m18.087s
real	45m3.671s

Building all with clang in Debug
real	70m8.669s
real	69m37.114s
real	70m26.698s

Building all with gcc in Debug
real	78m1.581s
real	78m6.648s
real	77m34.363s

Building chrome with clang in Release
real	43m58.864s
real	43m28.477s
real	43m29.998s

Building chrome with gcc in Release
real	57m6.050s
real	56m44.654s
real	58m8.629s

Building all with clang in Release
real	79m13.448s
real	79m0.107s
real	79m19.669s

Building all with gcc in Release
real	147m53.350s
real	146m35.010s
real	150m11.451s

clang is 10%-87% faster when building. [2]


Executable size

clang
Chromium: 12.6 kB
Chromium Framework: 45.2 MB
Chromium Framework.framework.dSYM DWARF file: 69.4 MB

gcc
Chromium: 12.6 kB
Chromium Framework: 52.1 MB
Chromium Framework.framework.dSYM DWARF file: 75.5 MB

Clang's output is almost 10% smaller.


Executable speed

I measured JavaScript performance. Since that's mostly dependent on
code generated by V8, it's not the greatest test, but it was easy to
do.

clang v8 (3 runs)
5655
5562
5637

clang sunspider
Total: 270.0ms +/- 0.9%

gcc v8 (3 runs)
5532
5542
5480

gcc sunspider
Total: 271.2ms +/- 9.1%

As expected, this looks mostly the same.

I also ran a slightly modified version of
http://trac.webkit.org/export/69591/trunk/WebCore/benchmarks/parser/html-parser.html
(changed to force a full garbage collection after every run, to reduce
variance), which checks a bit more than just JavaScript performance:

clang:
avg 5077.75
stdev 173.6965385377613

gcc
avg 5163.65
stdev 122.2183599137216

This looks good, too.



I didn't run most of the test binaries yet. (The one I ran passed all tests.)


Nico



1: Some files in the gpu project take very very long to build with
clang and require a ton of memory. There's possibly a clang bug in
there, and the build time here might go down a few minutes once that's
fixed. I'll try to find a reduced test case.
2: This was with a Release+Asserts build of clang r116145, the gcc
that comes with XCode on 10.6 ( i686-apple-darwin10-gcc-4.2.1 (GCC)
4.2.1 (Apple Inc. build 5664) ), and on a MacBook Pro with 4 GB ram
and 2.5 GHz i5 processor.



More information about the cfe-dev mailing list