Most of you will have seen this already but:
In order of speediness:
So, where-ever you can, use map. The reason map_foo is slower than bare_comprehension is the function overhead.
c = range(1000)
d = range(1,1001)
def foo(a,b):
return b - a
def map_foo():
e = map(foo, c, d)
return e
def comprehend_foo():
e = [foo(a, b) for (a,b) in zip(c,d)]
return e
def loop_foo():
e = []
for (a,b) in zip(c,d):
e.append(foo(a, b))
return e
def bare_loop():
e = []
for (a,b) in zip(c,d):
e.append(b - a)
return e
def bare_comprehension():
e = [b - a for (a,b) in zip(c,d)]
return e
"""
python -mtimeit -s'import test' 'test.map_foo()'
python -mtimeit -s'import test' 'test.comprehend_foo()'
python -mtimeit -s'import test' 'test.loop_foo()'
python -mtimeit -s'import test' 'test.bare_loop()'
python -mtimeit -s'import test' 'test.bare_comprehension()'
"""
In order of speediness:
test.bare_comprehension() -> 10000 loops, best of 3: 97.9 usec per loop test.map_foo() -> 10000 loops, best of 3: 125 usec per loop test.bare_loop() -> 10000 loops, best of 3: 135 usec per loop test.comprehend_foo() -> 10000 loops, best of 3: 159 usec per loop test.loop_foo() -> 1000 loops, best of 3: 202 usec per loop
So, where-ever you can, use map. The reason map_foo is slower than bare_comprehension is the function overhead.
Comments
Post a Comment