After wrapping your code
<https://gist.github.com/JayKickliter/486441949fb25bca9a2c> in a function,
as Stefan suggested:
elapsed time: 20.622407406 seconds (91480 bytes allocated)
This is on a 2008 Mac Pro with an 8-core Xeon. It will probably noticeably
faster on your i7.
On Wednesday, September 10, 2014 10:00:13 AM UTC-6, Jimmie Houchin wrote:
>
> Hello,
>
> I am working on an app which will be doing analysis on a lot of
> numerical data. Julia seems perfect for the job. However I wanted to do
> a simple test that I have run on a few languages to see where I wanted
> to land.
>
> Yes, I understand benchmarks, micro-benchmarks are evil. But I needed to
> see a little on how the languages performed in cpu, time and memory.
>
> Basically I have two almost identical test differing only in how large
> the array is that I am operating over. One is 100million items, the
> other 7.2million items. The reason for the two test is I am expecting at
> the start the 7.2m to be more normative, but I want to test towards some
> upper bounds. Some languages I can't do the 100m because the reach
> memory constraints.
>
> The array is simply populated with doubles or Float64 in Julia's case.
>
> In the test I iterate over the array, do some calculations assign back
> into the array. The calculations are simple calculations which can be
> reasonably consistent across languages. I do this iteration over the
> array 100 times.
>
> Hardware, Laptop, 3rd Gen, i7, 12GB Ram
> Lubuntu 14.10, running Openbox only, not Lubuntu DE
>
> Julia -- Version 0.3.1-pre+4720
>
> a = Array(Float64, 7200000)
>
> # populate array with some data
> for i = 1:length(a)
> n = i * 0.99999
> if n>100
> n-=(n-n/100.0)
> end
> a[i]= n*n*n
> end
>
> println("$(a[1]), $(a[end])")
>
> for i = 1:100
> t=time()
> for j = 1:length(a)
> n = a[j] * 0.99999 + (a[j]+1.0) / 0.9999999
> n*=0.99999
> n*=0.99999
> n*=0.99999
> n/=0.9999999
> n/=0.9999999
> n/=0.9999999
> if n>100
> n-=(n-n/100.0)
> end
> a[j]= n
> end
> println("loop number $i $(a[1]), $(a[end]), $(time()-t)")
> end
>
> With an array of 7.2m the test times are:
> C++11 gcc4.9 18.5 seconds, 58.6mb ram
> Java openjdk7 18.8 seconds, 77.5mb ram
> Julia 0.3.1 675 seconds, 156mb ram
> Luajit 5.1 22.3 seconds, 67mb ram
>
> I didn't necessarily expect Julia to match or beat C++. But I did hope
> it would be more comparable.
>
> Am I doing something wrong? Is my code not good Julia or idiomatic
> Julia. Or is this simply where Julia is at this point in time?
>
> Any help, understanding or wisdom greatly appreciated.
>
> Thanks.
>
> Jimmie
>
>