Has the language grown much faster in recent years? I coded some microarray data analysis in Mathematica at one point a few years ago, and was very disappointed in the slow execution, it made it unusable. It may have been a "naive" implementation that could be much improved, but a similarly naive Java implementation was much faster and not significantly more difficult to write.
Depends on what you mean by recent. In the last 10 years: yes, much faster for number crunching (like SVD, Cholesky, determinant computations, etc).
I seem to remember the pattern matching was especially slow, though very powerful. Had the latter been fast enough to use, it would have been a big advantage over Java. I'd be happy with single pass linear matching like ML/Haskell if it were just much faster than what I experienced with Mathematica's, I wonder if there's a way of doing that? Or type hinting, which most dynamic languages seem to eventually need to eek out more performance?
Hard to imagine that Mathematica wouldn't need something like that for good performance when you stray from the canned routines, but I'd like to be wrong!