5 ms·
Note that this article is missing the most pythonic implementation, which is z = [a + b for a, b in zip(x, y)] This is also twice as fast as their fastest
by chronial 7y ago
Note that this article is missing the most pythonic implementation, which is
z = [a + b for a, b in zip(x, y)]
This is also twice as fast as their fastest pure-python implementation on my machine.
- metalliqaz 7y agoThank you I was just thinking that the author ruined the credibility of the tests by not using pythonic code.
- voldacar 7y agoFor performance purposes, is there something especially important about zipping the two arrays into one array of tuples before adding them?
- BerislavLopac 7y agoZip does not create an array, it creates a generator which returns a tuple on each pass.
- BerislavLopac 7y agoOr even better, and likely faster for huge lists: z = list(map(sum, zip(x, y))) Even that list is superfluous; the map function returns a generator, so it's better you just need one number at a time but possibly not the whole list (e.g. loop through results until you find a certain value).
- dagw 7y agolikely faster for huge lists: Nope, at least not on my computer. The map solution was ~50% slower than the list comprehensions when run a list with 1 million ints, and almost twice as slow when run on a list with 100k ints. In fact even using a for loop in the obvious way was slightly faster than map with 1 million elements (about halfway between the map and list comprehension performance wise). Map without the last list call is however very slightly faster than the equivalent generator comprehension.
- BerislavLopac 7y agoThat is interesting. It's possible that they have done some optimisations on loops since the last time I measured it, but that was back in Python 2.6 (I think), and map was much faster than a loop (no comprehensions back then), and it was particularly obvious on very high number of input elements. Also, from your description I suspect that the list() call over a generator might introduce extra overhead, rather than map itself...
- dagw 7y agoYour last comment seems reasonable. I guess the new rule of thumb should be maps are still fast, but only if you want a generator. If you need a list use a list comprehension.