Tobiah <[EMAIL PROTECTED]> writes: > I checked out the array module today. It claims that > arrays are 'efficient'. I figured that this must mean > that they are faster than lists, but this doesn't seem > to be the case: > > ################ one.py ############## > import array > > a = array.array('i') > > for x in xrange(10000000): > a.append(x) > > for x in a: > a[x] += 1 > > ################ two.py ############## > a = [] > > for x in xrange(10000000): > a.append(x) > > for x in a: > a[x] += 1 > > ###################################### > > > ktops:toby:pytest> time python one.py; time python two.py > > real 0m28.116s > user 0m17.504s > sys 0m10.435s > > real 0m23.026s > user 0m13.027s > sys 0m9.777s > > > Perhaps the only advantage is that they take less memory > to store a large number of items? It would seem then, that > 'economical' might have been a better choice of word than > 'efficient'.
I get an even bigger difference with this test (same as yours, but using timeit and using an allegedly more efficient way of initialising the array) >>> def test(arr, n): ... a = arr(xrange(n)) ... for x in a: ... a[x] += 1 ... >>> n = 10000000 >>> import timeit >>> timeit.Timer('test(list, n)', 'from __main__ import test, n').timeit(1) 2.4988760948181152 >>> from array import array >>> arr = lambda n: array('i', n) >>> timeit.Timer('test(arr, n)', 'from __main__ import test, arr, n').timeit(1) 5.7419960498809814 >>> -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list