Generators 和 Timeit...我读错了结果吗?
Generators and Timeit... am I reading the results wrong?
我正在使用 Python 2.7.10.
我正在阅读有关生成器的教程,了解到 xrange
在调用时 returns 生成器,因此我希望它在计算总和时速度更快。
我对整个 1 个循环与 10 个循环感到困惑,考虑到只有 1 个循环,1 loop, best of 3
意味着什么?
timeit
如何知道要执行多少个循环,或者这是我应用 timeit
的代码的函数?
我不知道如何解释这里的结果....建议?
%timeit
魔术命令给出的时间IPython就是语句所用的时间
在 xrange
的情况下,它只用了 68.2 毫秒,而 range
花了 243 毫秒,因此 xrange
确实比你期望的 range
快。
除非您仔细阅读文档,否则打印结果可能看起来有点奇怪。
timeit(或使用前者的%timeit)的基本操作是:
\-- repeat timer loop n times (return best of t_i / m)
\-- timed run (time t_i is measured)
\-- statement loop
(unless specified, m = 1, 10, 100, ..., until t_i > 0.2s
t_i = sum(t_s)
)
\-- statement (t_s, time per statement)
显示的是max(t_i)
.
- 第一个数字(
n loops
)是每个计时器的循环次数运行。
- 第二个数字(
best of m
)是定时器的数量运行秒。
- 第三个数字是 每个语句 执行 (2) 中最佳 运行 的时间。
默认情况下timeit
运行每个定时循环语句一次,运行三个定时循环。改变定时循环次数对应的开关是-r
.
但是,如果定时器循环的 运行ning 时间小于 0.2
秒,它会在定时器循环内重复定时语句。首先它上升到 10
次,然后是 100
次,依此类推。这是第一个数字。固定这个数字对应的开关是-n
.
所以 range()
运行 一次用于单个计时器循环,因为它花费了超过 0.2
秒。然而,单个 xrange()
总和花费的时间较少 0.2
秒,因此重复了 10 次,这足以将其推过边界(十 运行 花费了 0.682
秒)。
生成的 运行ning 时间仍然是 single 语句的 运行ning 时间。其余的是典型的基准平滑的东西。
我正在使用 Python 2.7.10.
我正在阅读有关生成器的教程,了解到 xrange
在调用时 returns 生成器,因此我希望它在计算总和时速度更快。
我对整个 1 个循环与 10 个循环感到困惑,考虑到只有 1 个循环,1 loop, best of 3
意味着什么?
timeit
如何知道要执行多少个循环,或者这是我应用 timeit
的代码的函数?
我不知道如何解释这里的结果....建议?
%timeit
魔术命令给出的时间IPython就是语句所用的时间
在 xrange
的情况下,它只用了 68.2 毫秒,而 range
花了 243 毫秒,因此 xrange
确实比你期望的 range
快。
除非您仔细阅读文档,否则打印结果可能看起来有点奇怪。
timeit(或使用前者的%timeit)的基本操作是:
\-- repeat timer loop n times (return best of t_i / m)
\-- timed run (time t_i is measured)
\-- statement loop
(unless specified, m = 1, 10, 100, ..., until t_i > 0.2s
t_i = sum(t_s)
)
\-- statement (t_s, time per statement)
显示的是max(t_i)
.
- 第一个数字(
n loops
)是每个计时器的循环次数运行。 - 第二个数字(
best of m
)是定时器的数量运行秒。 - 第三个数字是 每个语句 执行 (2) 中最佳 运行 的时间。
默认情况下timeit
运行每个定时循环语句一次,运行三个定时循环。改变定时循环次数对应的开关是-r
.
但是,如果定时器循环的 运行ning 时间小于 0.2
秒,它会在定时器循环内重复定时语句。首先它上升到 10
次,然后是 100
次,依此类推。这是第一个数字。固定这个数字对应的开关是-n
.
所以 range()
运行 一次用于单个计时器循环,因为它花费了超过 0.2
秒。然而,单个 xrange()
总和花费的时间较少 0.2
秒,因此重复了 10 次,这足以将其推过边界(十 运行 花费了 0.682
秒)。
生成的 运行ning 时间仍然是 single 语句的 运行ning 时间。其余的是典型的基准平滑的东西。