Indeed it does! I thought JIT compilation takes place prior to execution of 
the script. Thanks so much, this makes sense now!

Output:
first call:   0.804573 seconds (1.18 M allocations: 53.183 MB, 1.43% gc 
time)
repeated call:  0.000472 seconds (217 allocations: 402.938 KB)

Thanks again,

Cheers!

On Monday, September 12, 2016 at 12:48:30 PM UTC+2, randm...@gmail.com 
wrote:
>
> The Julia code takes 0.000535 seconds for me on the second run -- during 
> the first run, Julia has to compile the method you're timing. Have a look 
> at the performance tips 
> <http://docs.julialang.org/en/latest/manual/performance-tips/#measure-performance-with-time-and-pay-attention-to-memory-allocation>
>  
> for a more in depth explanation.
>  
> Am Montag, 12. September 2016 11:53:01 UTC+2 schrieb MLicer:
>>
>> Dear all,
>>
>> i've written a low-pass filter in Julia and Python and the code in Julia 
>> seems to be much slower (*0.800 sec in Julia vs 0.000 sec in Python*). I 
>> *must* be coding ineffieciently, can anyone comment on the two codes 
>> below?
>>
>> *Julia:*
>>
>>
>> <https://lh3.googleusercontent.com/-pEyZjPDcmP8/V9Z6hJdXKfI/AAAAAAAAKLc/iiefpFSzY88S333QndnbnnAnKUBQvzTkACLcB/s1600/filter_julia.png>
>> using PyPlot, DSP
>>
>> # generate data:
>> x = linspace(0,30,1e4)
>> sin_noise(arr) = sin(arr) + rand(length(arr))
>>
>> # create filter:
>> designmethod = Butterworth(5)
>> ff = digitalfilter(Lowpass(0.02),designmethod)
>> @time yl = filtfilt(ff, sin_noise(x))
>>
>> Python:
>>
>> from scipy import signal
>> import numpy as np
>> import cProfile, pstats
>>
>> def sin_noise(arr):
>>     return np.sin(arr) + np.random.rand(len(arr))
>>
>> def filterSignal(b,a,x):
>>     return signal.filtfilt(b, a, x, axis=-1)
>>
>> def main():
>>     # generate data:
>>     x = np.linspace(0,30,1e4)
>>     y = sin_noise(x)
>>     b, a = signal.butter(5, 0.02, "lowpass", analog=False)
>>     ff = filterSignal(b,a,y)
>>
>>     cProfile.runctx('filterSignal(b,a,y)',globals(),{'b':b,'a':a,'y':y},
>> filename='profileStatistics')
>>
>>     p = pstats.Stats('profileStatistics')
>>     printFirstN = 5
>>     p.sort_stats('cumtime').print_stats(printFirstN)
>>
>> if __name__=="__main__":
>>     main()
>>
>>
>> Thanks very much for any replies!
>>
>

Reply via email to