31 ms·
Nope. Map() is same speed as for loop. Benchmarking methodology in the link is not good. Author should use timeit() or cProfiler or so. 0.01s of difference is
by akasakahakada 4y ago
Nope. Map() is same speed as for loop.
Benchmarking methodology in the link is not good. Author should use timeit() or cProfiler or so. 0.01s of difference is mostly due to fluctuation. The order of execution also matters. Say you want to test A and B function, you need actually to run A, B, B, A to see if the ordering brings the different.
- winrid 4y agoYeah I guess this isn't true anymore, it looks like maybe it was true in 2.6 days.
- akasakahakada 4y agoI immediately verified both claims. list(map(func, arr)) did bring 10% benefits if the func is builtin e.g. int(), str(). But if func is tuple(), list(), set() or any kind of user defined function, list(map()) is always slower. You can try yourself to see list(map()) is not working well: import numpy as np a = np.arrange(100000, 100000) %%timeit b1 = [np.sum(x) for x in a] # repeat once %%timeit b2 = list(map(np.sum, a)) # repeat once import gc gc.collect() %%timeit b2 = list(map(np.sum, a)) # repeat once b1 = [np.sum(x) for x in a] # repeat once I guess that's why I only use map() if and only if is it the case 'list(map(itemgetter, arr))', because generally there is no benefit to use it.
- winrid 4y agothanks!