No i did not. Thanks for pointing out
On Wednesday, January 29, 2014 11:16:07 AM UTC-5, Jacob Quinn wrote: > > Are you wrapping your code in a function? If not, it's going to slow the > code down a lot because it's in global scope and variable type checking > will be happening all over the place. Check out the performance tips page > in the Julia manual for other ideas: > http://docs.julialang.org/en/latest/manual/performance-tips/ > > -Jacob > > > On Wed, Jan 29, 2014 at 11:13 AM, Rajn <[email protected] > <javascript:>>wrote: > >> Hi, >> I am importing an image - gray scale, size (1440,1776,1). >> >> I wrote a simple code for performing a running average with a square >> filter of size 2*f+1, with f as a variable. >> I am not performing running average over the boundaries i.e., neglecting >> boundary pixels. >> >> >> Leaving aside the time to import image or display image in Matlab or >> Julia, I see that Matlab takes about 15 seconds and Julia (35 seconds). >> And there is only one section of recursive code which takes up this much >> time. >> >> The code is: >> >> S is sums over image pixels which are in Matrix A. >> I declare all in the beginning. Their sizes are declared. For example, >> >> A=1.0*data(img); #This extracts the image array from img image imported >> through Image. It is in Uint8 but multiplying by 1.0 converts it to Float64. >> S=zeros(Float64,imsz); >> >> The initial values of S have been calculated in an earlier section of >> the code and that is pretty fast. >> The main slower are the following lines. The entire code takes 35 seconds >> to run and this one takes most of that time (~34.9seconds). >> >> p1=f+1; >> #for m=(f+1):(imsz[1]-f) #imsz(1)=1440, imsz(2)=1776. >> # for n=(f+1):(imsz[2]-f-1) >> for n=(f+1):(imsz[2]-f-1) >> for m=(f+1):(imsz[1]-f) >> >> S[m,n+1]=S[m,n]+sum(sum(A[m-f:m+f,n+p1],2))-sum(sum(A[m-f:m+f,n-f],2)); >> end >> end >> >> I tried both ways i.e., using sum and also actually summing A in a >> separate for loop. If I do that it takes about 60 seconds. So 'sum' is >> faster than looping and adding to A. >> I also tried first column wise and then row wise looping as you will see >> in the commented section. It takes the same time - does not matter which >> way I do the loop. >> >> Matlab code: takes about 14 seconds. >> >> p1=f+1; >> for m=(f+1):(imsz(1)-f) >> for n=(f+1):(imsz(2)-f-1) >> S(m,n+1)=S(m,n)+(sum(A(m-f:m+f,n+p1),2))-(sum(A(m-f:m+f,n-f),2)); >> end >> end >> >> Any suggestions? Unfortunately my codes are on two different machines. >> Doubt if that make a difference? 2.3GHz,4Gb RAM-Matlab >> 3.4GHz,8Gb RAM-Julia >> >> >
