So many talented people have contributed so much to the Julia project that 
it would not be possible to acknowledge them all.

Nonetheless, my recent work has made me especially appreciative of the work 
of Tim Holy for the Profile code and the ProfileView package and of Dahua 
Lin for the  NumericExtensions and NumericFuns in particular.  These are 
incredible tools.

It is so easy to forget the you should profile before you attempt to 
optimize your code.  I just learned that again.  I was getting very good 
performance on an example using my MixedModels package - about twice the 
speed of the R/C++ package lme4 that other contributors and I have been 
working on seemingly forever.  Then I profiled my Julia code, which was 
already 2-3 as fast as the R/C++ version, viewed the profile and thought, 
"what's that wide bar over on the left?".  I "knew" where the function must 
be spending its time and, of course, most of the time was being taken up in 
another part of the function entirely.  Some rewriting has now resulted in 
code that is 10 times as fast as the R/C++ code.

I had a similar experience earlier in this development cycle when I 
replaced a call to fma! in the NumericExtensions package with an explicit 
loop using @inbounds that I "knew" would be just as fast.  It wasn't.  


Reply via email to