My large project is much (3-4x?) slower under 0.5. I know there are a 
variety of open issues about this to be hopefully fixed in the 0.5.x 
timeframe, but are there any general workarounds at the moment?

My project includes the following in case it's relevant:

   - Many nested functions forming closures, which I pass to optimization 
   and equation solving functions. In 0.4 I used the Base.call trick on custom 
   types to make performant closures. I rewrote the code for 0.5 to just use 
   regular anonymous functions since they are fast now.
   - ForwardDiff, splines (Dierckx mostly)
   - Large custom immutable types which carry parameters. These get passed 
   around. I have been considering just making all my parameters global 
   constants rather than passing them around. It seems that this could get 
   them inlined into my functions and save time. However, all my simple tests 
   show global constants perform exactly the same as explicitly passing the 
   parameters, so as long as this still holds in big codes this shouldn't 
   matter.
   - A lot of nested function calls. I prefer to write lots of small 
   functions instead of one big one

Reply via email to