performance results?

Hi,

I'm very interested in the quality of the codes generated by LLVM.

Has anyone done performance comparision among llvm, gcc, and native
compilers on x86 or sparc for SPEC CPU2000 or other large benchmarks?

thanks.

Qiong

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?