[Numpy-discussion] A surprising result from benchmarking
Dan Becker
dbecker at alum.dartmouth.org
Sun Mar 11 01:02:13 EST 2007
Hi Everyone,
I'm new to numpy, and I'm finding it hard to predict what is fast in
python/numpy and what is slow. The following seems puzzling: I am doing the
same thing an ugly way and a cleaner way. But the ugly map/lambda/filter
expression is 15x faster than using numpy's internals.
Can anyone explain why? For now, this makes me nervous about incorporating
basic numpy functionality into real programs.
---Code starts here---
import scipy
import time
import psyco
from numpy import matrix
print("New run")
myMat=scipy.randn(500,500)
t1=time.time()
highEnough=myMat>0.6
greaterPerLine=[sum(x) for x in highEnough]
elapsed1=time.time()-t1
print("method 1 took %f seconds"%elapsed1)
t2=time.time()
greaterPerLine2=map(lambda(x):len(filter(lambda(y):y>0.6,x)),myMat)
elapsed2=time.time()-t2
print("method 2 took %f seconds"%elapsed2)
---Output starts here---
New run
method 1 took 3.566760 seconds
method 2 took 0.232356 seconds
---
Thanks so much!
Dan
More information about the NumPy-Discussion
mailing list