Hacker News new | past | comments | ask | show | jobs | submit login

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.



Or 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).


likely 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.


That 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...


Your 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.


Thank you I was just thinking that the author ruined the credibility of the tests by not using pythonic code.


For performance purposes, is there something especially important about zipping the two arrays into one array of tuples before adding them?


Zip does not create an array, it creates a generator which returns a tuple on each pass.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: