Is this the performance difference between anonymous and named functions?

 — John

On Jun 8, 2014, at 8:59 PM, Carlos Baptista <[email protected]> wrote:

> I have a module consisting out of several files. In one file I define two 
> immutables and a union:
> 
> immutable GlobalRBF
>     eval::Function
> end
> 
> 
> immutable CompactRBF
>     eval::Function
> end
> 
> const global RBF = Union(GlobalRBF, CompactRBF)
> 
> and I define several immutable objects of which one is:
> 
> const global rbf_cp2 = CompactRBF(x -> (1.0 - x)^4*(4.0*x + 1.0))
> 
> In another file I have a function in which the above univariate scalar 
> function is evaluated like this:
> 
> function myFunc(rbf::RBF)
>     # Some stuff
> 
>     nested_for_loop
>         rbf.eval(r[i, j])
>     end
> 
>     # Some stuff
> 
> end
> 
> If I then run my code and use @time to measure the performance I get the 
> following result:
> 
> elapsed time: 0.002800011 seconds (934720 bytes allocated)
> 
> However if I define the immutable object slightly differently like this:
> 
> f(x) = (1.0 - x)^4*(4.0*x + 1.0)
> const global rbf_cp2 = CompactRBF(f)
> 
> then with @time I measure:
> 
> elapsed time: 0.001887599 seconds (606912 bytes allocated)
> 
> So, I would like to know what the big difference is between the two 
> implementations of the object that would cause such a difference in 
> performance?

Reply via email to