Version 2.9 of the Low-Level Virtual Machine is set to be released in a little more than a week, but what will it mean much for users in terms of performance? We will be looking at the LLVM 2.9 and Clang performance in the coming days (along with GCC 4.6, which was just released). We are beginning this weekend by providing a look at how using LLVM 2.9 affects the performance of the Mesa Gallium3D LLVMpipe driver relative to the previous LLVM 2.6, 2.7, and 2.8 releases.
Hehehe, the VDrift test looks like a spider with its left legs splayed out
Anyway: is this lack of change due to problems in llvmpipe/mesa, or is LLVM just not going anywhere? I keep hearing all these tales about how LLVM ought to be lightning-fast and impressively good at speeding up the performance of anything that does "compiler-y" stuff, but I have yet to see any evidence substantiating this. Sure, llvmpipe is faster than softpipe, but softpipe isn't meant to be optimized anyway. GCC *is* intended to be optimized, and when you compare the performance of the built executables between GCC and LLVM, GCC almost always wins -- at least from what I've seen.
My understanding is that GCC does some optimizations that (for various reasons) LLVM doesn't even attempt to do yet. Also, GCC has the benefit of years of experimentation and tuning, including tuning for specific processors.
In the case of llvmpipe, though more likely it's just hitting the limits of what the hardware can do. llvmpipe takes advantage of some of the great strengths of llvm, like it's SIMD code generation and parallelization techniques. With this sort of workload, you can easily generate code to use up all the silicon available on a processor.