【发布时间】:2016-11-10 17:17:11
【问题描述】:
这让我有点吃惊。我一直在测试性能。
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。啊哈!你的回答让我想到我拥有
from numpy import *的事实与它有关...... -
这就是为什么你从不使用
from thing import *...另外澄清哪个版本的Python会有所帮助,因为range在2.x和3.x之间是不同的。 -
@Theguy:numpy 定义了自己的
sum函数。 -
@jonrsharpe,这是 spyder 的默认设置。我在 python 3 上。
标签: python python-3.x numpy