Let's calculate the
dot product of two vectors:
from itertools import starmap, izip
from operator import mul
def dot1(v1, v2):
result = 0
for i, value in enumerate(v1):
result += value * v2[i]
return result
def dot2(v1, v2):
return sum(starmap(mul, izip(v1, v2)))
if __name__ == "__main__":
from timeit import Timer
num_times = 1000
v1 = range(100)
v2 = range(100)
t1 = Timer("dot1(%s, %s)" % (v1, v2), "from __main__ import dot1")
print t1.timeit(num_times) # 0.038722038269
t2 = Timer("dot2(%s, %s)" % (v1, v2), "from __main__ import dot2")
print t2.timeit(num_times) # 0.0260770320892
dot2 is faster and shorter, however
dot1 is more readable - my vote goes to
dot2.
No comments:
Post a Comment