I don't see nearly the same performance gap (see below for Julia timings, MATLAB timings were in the same ballpark). However, I'm seeing an issue that is definitely inexplicably fishy. In the libuv fork, this same code, for N=17 (128), executes in ~10 seconds, occupying 100% of one processor. Whereas on the main fork, it pegs all 4 cores of my i7, and takes 50% longer.
I tried using mkl from MATLAB2011b, however it lacked dgesdd_ and DGEMM crashed (I'm downloading MATLAB2012b now)
** Julia timings of test code: **
N=1 elapsed time: 0.01194000244140625 seconds
N=2 elapsed time: 0.01686692237854004 seconds
N=3 elapsed time: 0.03225588798522949 seconds
N=4 elapsed time: 0.03948688507080078 seconds
N=5 elapsed time: 0.05979800224304199 seconds
N=6 elapsed time: 0.042874813079833984 seconds
N=7 elapsed time: 0.07765388488769531 seconds
N=8 elapsed time: 0.07561302185058594 seconds
N=9 elapsed time: 0.10958385467529297 seconds
N=10 elapsed time: 0.14064788818359375 seconds
N=11 elapsed time: 0.14958906173706055 seconds
N=12 elapsed time: 0.32268595695495605 seconds
N=13 elapsed time: 0.6324131488800049 seconds
N=14 elapsed time: 2.3899431228637695 seconds
N=15 elapsed time: 3.87203311920166 seconds
N=16 elapsed time: 5.7606799602508545 seconds
N=17 elapsed time: 14.2980318069458 seconds
** Errors if I try using an old version of MKL **
symbol could not be found dgesdd_ (-1): dlsym(0x102a69940, dgesdd_): symbol not found
symbol could not be found dgesdd_ (-1): dlsym(0x102a69940, dgesdd_): symbol not found
MKL ERROR: Parameter 10 was incorrect on entry to DGEMM
MKL ERROR: Parameter 10 was incorrect on entry to DGEMM
MKL ERROR: Parameter 10 was incorrect on entry to DGEMM
MKL ERROR: Parameter 10 was incorrect on entry to DGEMM
Segmentation fault: 11
** Why I hate Matlab's implementation of () for array indexing **
>> [1 2 3](2)
[1 2 3](2)
|
Error: Unbalanced or unexpected parenthesis or
bracket.
> <expm.jl>--
>
>
>