would it make sense to warn the user about "slowing down" global variables 
from julia itself?  and/or about other slowing constructs that are almost 
always "beginner's mistakes" that julia can guess at?  my guess is that if 
a program does not reuse a global outside its context, this is defacto a 
programmer error that julia can warn the user about.

in fact, this particular one is so common a scenario and programmer mistake 
that it is worth dealing with.  ideally, the compiler would recognize this 
mistake and auto-rewrite the code.  global variables would be local by 
default, and assigned into a global only once at program (or local context) 
termination.  the easier solution would be to issue a warning when a 
variable could be declared local but is declared global.  (this could be a 
warning with a pragma to turn it off.)

it is so easy to make suggestions when one does not have to write code...


On Sunday, December 28, 2014 11:24:32 AM UTC+8, Bob Quazar wrote:
>
> The devectorized code below should be much faster than equivalent 
> vectorized code, according to "Fast Numeric Computation in Julia 
> <http://julialang.org/blog/2013/09/fast-numeric/>" on the official 
> julialang.org web site. But I find just the opposite!
>
> julia> x = randn(10000000);
>> julia> y = randn(10000000);
>> julia> r = zeros(10000000);
>> julia> @time r[:] = exp(-abs(x-y));
>> elapsed time: 1.233813455 seconds (320000432 bytes allocated, 14.20% gc 
>> time)
>> julia> @time for i = 1:length(x)
>>            r[i] = exp(-abs(x[i]-y[i]))
>>        end
>> elapsed time: 10.326934093 seconds (1599983704 bytes allocated, 21.29% gc 
>> time)
>
>
> Can someone explain what's going on? The devectorized version appears to 
> allocate 5x as much memory.
>
> Thanks much!
>
>

Reply via email to