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