[cfe-dev] clang builds chromium

Nico Weber thakis at chromium.org
Thu Oct 14 13:56:19 PDT 2010


On Wed, Oct 13, 2010 at 10:08 AM, Nico Weber <thakis at chromium.org> wrote:
> 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.

Quick follow-up: This is just template instantiation being slow. It's
also a problem in gcc. There's nothing clang can do here.

Nico

> 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