Cool it works better now. I thought having the codes inside begin and end is already avoiding the global scoping of the variables. But I would still like to point out that java is still twice as fast than Julia. I am not sure how is scala compared to Julia. But Julia syntax is wayyyy easier than java and scala.
Freddy Chua On Sun, Apr 27, 2014 at 2:07 PM, Elliot Saba <[email protected]> wrote: > Hey there Freddy. The first thing you can do to speed up your code is to > throw it inside of a function. Simply replacing your first line (which is > "begin") with "function domytest()" speeds up your code significantly. I > get a runtime of about 1.5 seconds from running the function versus ~70 > seconds from running the original code. > > I believe the reason behind this is because outside of a function, all of > these variables are treated as global variables, which cannot have the same > assumptions of type-stability that local variables can have, which slows > down computation significantly. See this > page<http://julia.readthedocs.org/en/latest/manual/performance-tips/>for more > info, and other performance tips. > -E > > > On Sat, Apr 26, 2014 at 11:03 PM, Freddy Chua <[email protected]> wrote: > >> This code takes 60+ secs to execute on my machine. The Java equivalent >> takes only 0.2 secs!!! Please tell me how to optimise the following >> code.begin >> >> begin >> N = 10000 >> K = 100 >> rate = 1e-2 >> ITERATIONS = 1 >> >> >> # generate y >> >> y = rand(N) >> >> # generate x >> x = rand(K, N) >> >> # generate w >> w = zeros(Float64, K) >> >> tic() >> for i=1:ITERATIONS >> for n=1:N >> y_hat = 0.0 >> >> for k=1:K >> y_hat += w[k] * x[k,n] >> end >> >> for k=1:K >> w[k] += rate * (y[n] - y_hat) * x[k,n] >> end >> end >> end >> toc() >> end >> >> Sorry for repeated posting, I did so to properly indent the code.. >> > >
