这让我感到惊讶。我一直在测试演出。为什么numpy.sum buiding新生成器比使用范围更快?
In [1]: import numpy as np
In [2]: %timeit a = np.sum(range(100000))
Out[2]: 100 loops, best of 3: 16.7 ms per loop
In [3]: %timeit a = np.sum([range(100000)])
Out[3]: 100 loops, best of 3: 16.7 ms per loop
In [4]: %timeit a = np.sum([i for i in range(100000)])
Out[4]: 100 loops, best of 3: 12 ms per loop
In [5]: %timeit a = np.sum((i for i in range(100000)))
Out[5]: 100 loops, best of 3: 8.43 ms per loop
我想了解内部工作以及学习如何推广以获得最佳实践。为什么4(建立一个新的发电机)比1好?
我明白为什么创建列表需要更多时间。但是,为什么3比2好呢?为什么不是2比1差呢?列表是否在1?我正在使用from numpy import *
。
'sum([range(100000)])'是'TypeError',所以我不确定你在这里进行有用的比较...... – jonrsharpe
@jonrsharpe。啊哈!你的回答让我想到,我从'numpy import *'有这个事实与它有关...... – Aguy
这就是为什么你从不使用'from事物导入*'...还要说明哪个版本的Python将会有所帮助,因为范围在2.x和3.x之间是不同的。 – jonrsharpe