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