This is surely cheating, but

julia> a = rand()
0.7573462021713695

julia> @eval begin
           function test5()
               a = $a
               a + a
           end
       end
test5 (generic function with 1 method)

does give you the "short" version.

--Tim

On Wednesday, February 11, 2015 08:20:02 AM Simon Danisch wrote:
> Hi,
> I was trying to find out, what the best way is to have some local, constant
> storage for a function, which is only accessible from inside the function
> So something like this:
> begin
> const local a = []
> test() = dosomething(a)
> end
> 
> I was quite surprised, that you can't do this efficiently.
> Or at least I didn't find a way, or tested it incorrectly.
> Here are the different combinations I tried and the emitted native code:
> https://gist.github.com/SimonDanisch/e4bed0a16bdd847a8c2b#file-local_functio
> n_storage-jl
> 
> test11 && test12 seems to be what julia does internally for test1-test4
> (and the example here)
> It's especially odd, as a global const seems to be faster than a local
> const, even though that the local version is more restricted.
> Is this because there has been more time spend on making globals fast?
> 
> Best,
> Simon

Reply via email to