python:慢timeit()函数

发布于 2024-08-02 07:37:51 字数 272 浏览 6 评论 0原文

当我在 timeit() 之外运行下面的代码时,它似乎立即完成。然而,当我在 timeit() 函数内运行它时,它需要更长的时间。为什么?

>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718

使用: Python 3.1 (x86) - AMD 速龙 64 X2 - WinXP(32 位)

When I run the code below outside of timeit(), it appears to complete instantaneously. However when I run it within the timeit() function, it takes much longer. Why?

>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718

Using:
Python 3.1 (x86) -
AMD Athlon 64 X2 -
WinXP (32 bit)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

Spring初心 2024-08-09 07:37:51

timeit() 函数多次运行代码(默认一百万次)并取计时的平均值。

要仅运行代码一次,请执行以下操作:

t.timeit(1)

但这会给您带来偏差的结果 - 它重复是有充分理由的。

要获得让它重复的每个循环时间,请将结果除以循环数。如果一百万太多,请使用较小的重复次数值:

count = 1000
print t.timeit(count) / count

The timeit() function runs the code many times (default one million) and takes an average of the timings.

To run the code only once, do this:

t.timeit(1)

but that will give you skewed results - it repeats for good reason.

To get the per-loop time having let it repeat, divide the result by the number of loops. Use a smaller value for the number of repeats if one million is too many:

count = 1000
print t.timeit(count) / count
天赋异禀 2024-08-09 07:37:51

因为 timeit 默认运行一百万次。重点是进行微基准测试,而获得短事件准确计时的唯一方法就是多次重复它们。

Because timeit defaults to running it one million times. The point is to do micro-benchmarks, and the only way to get accurate timings of short events is to repeat them many times.

铜锣湾横着走 2024-08-09 07:37:51

根据 docs,Timer.timeit() 默认运行您的代码一百万次。使用“number”参数更改此默认值:

t.timeit(number=100)

例如。

According to the docs, Timer.timeit() runs your code one million times by default. Use the "number" parameter to change this default:

t.timeit(number=100)

for example.

月下伊人醉 2024-08-09 07:37:51

Timeit 默认运行一百万次循环。

您还可能遇到操作顺序问题:(3**4)**5 != 3**4**5

Timeit runs for one million loops by default.

You also may have order of operations issues: (3**4)**5 != 3**4**5.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文