> Has anyone done performance comparision among llvm, gcc, and native
> compilers on x86 or sparc for SPEC CPU2000 or other large benchmarks?
This happens every day (more or less) on many of the nightly testers!
Take a look at:
http://llvm.cs.uiuc.edu/testresults/
and you'll be able to find some of the testers running the SPEC cpu2000
suite. There aren't any testers I'm aware of that run a non-gcc
compiler, but for comparisons against gcc, well, the data's there. On
x86 I think you'll find there's not a lot between the gcc backend and
those of other compilers, but I'm not sure about SPARC to be honest.
The short story is that LLVM runs all sorts of wonderful interprocedural
optimizations in a jiffy. It can also build code very (very!) quickly; I
have been surprised by how fast LLVM implementations of highly dynamic
languages can be. Personally, I saw a huge speed gain moving from Anton
Ertl's "vmgen" (an efficient interpreter toolkit, and an excellent
one
at that) to LLVM, even though my particular application still ends up
spending ~10% of its time in LLVM. If there's a language out there that
_still_ ends up more efficient interpreted, it's either a scripting
language of some sort or else very, very weird*.
*However*, LLVM doesn't currently have things like whizz-bang register
allocators or death-defying hyperblock schedulers. Worse, some targets
have little beyond basic instruction selection - the IA64 backend
doesn't currently have any sort of instruction scheduling whatsoever!
This sort of thing is being worked on though, and if you'd like to help
out it'd be welcome.
If you have more specific questions about LLVM performance, please ask!
HTH,
Duraid
* I'd love to see a port of "brew"
(http://reppre51.home.solnet.ch/) to
LLVM one day, if only because it would make an excellent benchmark. Or
maybe Reid will turn 'stacker' into a complete FORTH implementation one
day?