wooh, this @inbounds thing is new to me... At least it does shows that Julia is comparable to Java.
On Sunday, April 27, 2014 3:04:26 PM UTC+8, Elliot Saba wrote: > > Since we have made sure that our for loops have the right boundaries, we > can assure the compiler that we're not going to step out of the bounds of > an array, and surround our code in the @inbounds macro. This is not > something you should do unless you're certain that you'll never try to > access memory out of bounds, but it does get the runtime down to 0.23 > seconds, which is on the same order as Java. Here's the full > code<https://gist.github.com/staticfloat/11339342>with all the modifications > made. > -E > > > On Sat, Apr 26, 2014 at 11:55 PM, Freddy Chua <fred...@gmail.com<javascript:> > > wrote: > >> Stochastic Gradient Descent is one of the most important optimisation >> algorithm in Machine Learning. So having it perform better than Java is >> important to have more widespread adoption. >> >> >> On Sunday, April 27, 2014 2:03:28 PM UTC+8, Freddy Chua 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.. >>> >> >