I've found that I can get speedups of a factor of 2-4x sometimes by using matlab's emlmex command to take my matlab code directly into a mex file. Basically what emlmex does is get matlab to take your m-file and turn it into a mex file so that it gets compiled and the loop speeds up a lot.  

I emailed mathworks about this once.  They claim it need not always create speedups, but it can have very substantial effects sometimes, and it's pretty easy to implement -- there's no need to know how to write C code.  Sometimes you just can't avoid a loop.