Just discovered a few days ago that keyword arguments in functions are very slow, but I guess they are not slower in 0.5.
On Thursday, September 29, 2016 at 10:15:20 AM UTC+8, Andrew wrote: > > 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 > >