The LLVM interpreter is less than ideal as an actual interpreter rather than something for doing constant folding and that kind of thing; the instructions are too low-level for it to be really fast. For example, bit widths of integers are represented in the abstraction; that adds overhead to even the simplest of arithmetic operations.
I don't think the interpreter was intended to be really fast. It's pretty good for debugging and platform-independent execution. For speed there's the JIT.