diff options
Diffstat (limited to 'benchmarks/simpleindex.py')
-rw-r--r-- | benchmarks/simpleindex.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/benchmarks/simpleindex.py b/benchmarks/simpleindex.py new file mode 100644 index 000000000..e4e541d96 --- /dev/null +++ b/benchmarks/simpleindex.py @@ -0,0 +1,48 @@ +import timeit +# This is to show that NumPy is a poorer choice than nested Python lists +# if you are writing nested for loops. +# This is slower than Numeric was but Numeric was slower than Python lists were +# in the first place. + +N = 30 + +code2 = r""" +for k in xrange(%d): + for l in xrange(%d): + res = a[k,l].item() + a[l,k].item() +""" % (N,N) + +code3 = r""" +for k in xrange(%d): + for l in xrange(%d): + res = a[k][l] + a[l][k] +""" % (N,N) + +code = r""" +for k in xrange(%d): + for l in xrange(%d): + res = a[k,l] + a[l,k] +""" % (N,N) + +setup3 = r""" +import random +a = [[None for k in xrange(%d)] for l in xrange(%d)] +for k in xrange(%d): + for l in xrange(%d): + a[k][l] = random.random() +""" % (N,N,N,N) + +numpy_timer1 = timeit.Timer(code, 'import numpy as np; a = np.random.rand(%d,%d)' % (N,N)) +numeric_timer = timeit.Timer(code, 'import MLab as np; a=np.rand(%d,%d)' % (N,N)) +numarray_timer = timeit.Timer(code, 'import numarray.mlab as np; a=np.rand(%d,%d)' % (N,N)) +numpy_timer2 = timeit.Timer(code2, 'import numpy as np; a = np.random.rand(%d,%d)' % (N,N)) +python_timer = timeit.Timer(code3, setup3) +numpy_timer3 = timeit.Timer("res = a + a.transpose()","import numpy as np; a=np.random.rand(%d,%d)" % (N,N)) + +print "shape = ", (N,N) +print "NumPy 1: ", numpy_timer1.repeat(3,100) +print "NumPy 2: ", numpy_timer2.repeat(3,100) +print "Numeric: ", numeric_timer.repeat(3,100) +print "Numarray: ", numarray_timer.repeat(3,100) +print "Python: ", python_timer.repeat(3,100) +print "Optimized: ", numpy_timer3.repeat(3,100) |