Julia doesn't optimize code run in the global scope. Try putting your
code in a function

On Friday, July 18, 2014, eric l <[email protected]> wrote:

> I just started with Julia
>
> I run with Julia 0.2.1 under Mac OSX 10.9.4 (Intel Core i7 with 8 GB @
> 1600MHz)
>
>
> As a first try I decided to write a bit size bitmap module.
> I am Using Uint (Uint 64 on my laptop)
>
> I got some strange memory allocation value:
>
> julia> bmv = zeros (Uint, 2^20)
> 1048576-element Array{Uint64,1}:
>  0x0000000000000000
>  0x0000000000000000
>  0x0000000000000000
> ...
>
> *julia> *
> *sizeof(bmv)*
>
> *8388608**julia> *
> *@time for i in 1:11:2^26*
> *       bmv[(i >>> 6) + 1] |= 1 << (i & 0x3F)**      end*
>
> elapsed time: 1.547175739 seconds (524573328 bytes allocated)
>
> *julia> *
> *@time for i in 1:11:2^26**              bmv[(i >>> 6) + 1] |= 1 << (i &
> 0x3F)*
> *                   end*
>
> elapsed time: 1.563902069 seconds (571854576 bytes allocated)
>
> *julia> **sizeof(bmv)*
>
> *8388608*
>
> *julia> **@time sum(count_ones, bmv[1:end])*
>
> elapsed time: 0.066193955 seconds (25428088 bytes allocated)
> *6100806*
>
>
> As any can see I start with an array of 2^20 Uint64 : 8MB of zeros
> and I go through it and modify a bit with some bit arithmetic.
> What surprise me is the allocation more  than 500MB to do a simple for
> loop of a 8MB  vector.
>
> Actually the sum of pop-count across the  same array only require an extra
> 24MB.
>
> What am I doing wrong and do not understand about Julia?
>
> (By the way I am not interested in other way to doing the same equivalent
> processing (e.g. Bool array...) )
>
> Thanks,
>
> Eric.
>
>

Reply via email to