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
>
>

Reply via email to