Why the exec time of test(readdata()) and test(randomdata()) of following program is different? my test file 150Hz10dB.wav has 2586024 samples, so I set randomdata function to return a list with 2586024 samples. the exec result is: 2586024 <type 'list'> 10.8603842736 2586024 <type 'list'> 2.16525233979 test(randomdata()) is 5x faster than test(readdata()) if I remove "from scipy import *" then I get the following result: 2586024 <type 'list'> 2.21851601473 2586024 <type 'list'> 2.13885042216
So, what the problem with scipy? Python 2.4.2, scipy ver. 0.5.1 import wave from scipy import * from time import * import random from array import array def readdata(): f = wave.open("150Hz10dB.wav", "rb") t = f.getparams() SampleRate = t[2] data = array("h", f.readframes(t[3])) f.close() left = data[0::2] mean = sum(left)/float(len(left)) left = [abs(x-mean) for x in left] return left def randomdata(): return [random.random()*32768.0 for i in xrange(2586024)] def test(data): print len(data) print type(data) envelop = [] e = 0.0 ga, gr = 0.977579425259, 0.999773268338 ga1, gr1 = 1.0 - ga, 1.0 - gr start = clock() for x in data: if e < x: e *= ga e += ga1*x else: e *= gr e += gr1*x envelop.append(e) print clock() - start return envelop test(readdata()) test(randomdata()) -- http://mail.python.org/mailman/listinfo/python-list