[cfe-dev] Parsing benchmark: LibTomMath
Steve Naroff
snaroff at apple.com
Sat Nov 17 07:33:16 PST 2007
On Nov 16, 2007, at 9:05 PM, Neil Booth wrote:
> Chris Lattner wrote:-
>
>> It would be better to run the gcc test 3 times then the clang test 3
>> times and take the minimum of each. That said, we should be
>> significantly faster... 3x is awesome!
>
> I don't want to spoil the party :), but the comparison is not really
> fair.
> cc1 should be being invoked to avoid an extra fork/exec that
> penalizes GCC. GCC handles character sets to some extent, which
> is a non-trivial cost, which clang does not. Clang doesn't implement
> all the language yet; the extra semantic checking will likely slow
> it down slightly. I believe GCC does lowering of some kind in
> addition to semantic analysis with -fsyntax-only, but I guess that
> can be viewed as an imlpementation weakness.
>
While everything you say is accurate, I don't think these
implementation level issues should be "over analyzed" (particularly at
this point in the project). For example, most developers don't invoke
cc1 directly (so doing so in a benchmark seems like cheating).
While you can pick apart any benchmark, front-end performance is
something that needs to be tracked early and often. Compile-time
performance wasn't a gcc goal for many years (which led to some of
gcc's bloat and compile-time woes).
I'd like to emphasize something (my own form of over analysis:-)...
Unlike gcc, clang is being developed as a set of reusable components
(with the goal of supporting a diverse set of needs). From my
perspective, striking the right balance between abstraction and
performance is an "art". It's hard to do, and hasn't been a part of
the C compiler development culture over the years (making it difficult
to find people that respect/understand this idiom).
That said, the fact that clang is very competitive with gcc on
"traditional" batch mode processing is very encouraging.
snaroff
> Of course, once complete, clang will probably be further improved
> speed-wise, and having said all that I'm sure clang will end up much
> faster than GCC.
>
> As another data point, here are timings on my (slow) machine,
> fastest of three runs, for compiling the preprocessor files of my
> own C front end. Like clang, cfe is stand-alone, and doesn't handle
> charsets, so to that extent it is a fairer comparison. Like clang
> there hasn't really been any time spent optimizing for speed.
> However unlike clang it does semantically analyze and diagnose
> pretty much the whole language. clang/llvm was compiled with gmake
> MAKE_OPTIMIZED=1 -- I believe that's how to get an optimized
> executable.
>
> $ time for file in cpp/*.c; do /usr/libexec/cc1 -quiet -fsyntax-only
> -I.
> $file ;done
>
> real 0m1.098s
> user 0m0.843s
> sys 0m0.190s
>
> $ time for file in cpp/*.c; do ~/src/nobackup/llvm/Release/bin/clang
> -fsyntax-only -I. $file ;done
> cpp/macro.c:686:15: error: variable has incomplete type 'char []'
> static char compile_date[] = "\"Mmm dd yyyy\"";
> ^
> cpp/macro.c:687:15: error: variable has incomplete type 'char []'
> static char compile_time[] = "\"hh:mm:ss\"";
> ^
> 2 diagnostics generated.
>
> real 0m0.456s
> user 0m0.281s
> sys 0m0.147s
>
> $ time for file in cpp/*.c; do ~/src/cfe/cfe -I. $file ;done
>
> real 0m0.205s
> user 0m0.118s
> sys 0m0.083s
>
> So there is still room for improvement, curing the C++ bloat and all
> that. 8)
>
> Neil.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list