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..
>>
>
>

Reply via email to