问题标签 [timeit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7521 浏览

python - Timeit,NameError:未定义全局名称。但我没有使用全局变量

我想测量以下代码的执行速度:

我将此代码存储在 pe1m.py 下。现在我想用 python 解释器测试文件的速度。我做了:

但我得到:

但我没有任何全局变量。

0 投票
3 回答
4276 浏览

python - Python 语法:在 timeit 语句中使用循环

其中两个语句运行,而另一个因语法错误而失败。我究竟做错了什么?

0 投票
2 回答
4441 浏览

python - 在 timeit 中使用分号

timeit.timeit当我在作为字符串传递的语句参数中有异常时,我似乎无法开始工作:

这导致:

我正在使用 Python 3.3 运行它,但即使使用旧的 Python (3.2) 也会发生同样的错误。

更新:

我正在关注此文档(强调我的):

类 timeit.Timer(stmt='pass', setup='pass', timer=)

小代码片段的计时执行速度类。

构造函数采用要计时的语句、用于设置的附加语句和计时器函数。两个语句都默认为“通过”;计时器功能是平台相关的(参见模块文档字符串)。stmt 和 setup 也可能包含多个语句,用 ; 分隔。或换行符,只要它们不包含多行字符串文字。

0 投票
2 回答
98 浏览

python - 强制 timeit 自动选择语句执行的次数

在命令行中,我可以这样做:

根据文档:

如果未给出 -n,则通过尝试连续的 10 次方来计算合适的循环次数,直到总时间至少为 0.2 秒。

这很好用,但是在我的程序中使用时如何获得相同的行为timeit?如果我省略了调用的number参数timeit.timeit,它将默认为1000000.

0 投票
1 回答
1028 浏览

python - Python - timeit 没有结果

我在 test.py 中编写了这个简单的代码(在 python 中)。我尝试运行 timeit 并且没有任何错误,但我没有得到有关运行时间的任何信息。你能帮助我吗 ?

我期待一个结果,例如(示例):

但我只有:

我没有 timeit 的结果。我使用 python 2.7 和 linux。

0 投票
2 回答
6684 浏览

python - Python timeit 和程序输出

有什么办法可以使用timeit函数同时输出函数结果和处理时间?

现在我正在使用

但这只是输出时间而不是程序输出,它在结束时返回一些东西。我希望它输出

在同一条线上。

理想情况下,我希望能够通过运行 N 次然后输出程序结果及其平均时间来取程序的平均值(总共一个输出)

0 投票
2 回答
1297 浏览

python - 我们可以在同一个模块中运行多个函数吗?

我想在同一个 Python 模块中编写多个函数,每个函数都是使用 的单独分析测试timeit,以便我可以使用命令行参数来指定要运行的函数。一个天真的例子(profiling.py)是:

但是,当我尝试时python profiling.py foo,我收到如下错误:

我在代码中搜索了通常的空格/制表符缩进错误,但没有找到。因此我想知道是不是因为我timeit在函数中包装了一个测试,这是不允许的?

0 投票
1 回答
1598 浏览

python - Python timeit:结果缓存而不是计算?

我正在测试几种不同的算法(用于解决 16x16 数独),使用 timeit 模块测量它们的性能。但是,似乎实际上只计算了第一次 timeit.repeat() 迭代,因为其他迭代变得更快。使用 t.repeat(repeat=10, number=1) 测试单个算法,得到以下结果:

[+] 结果......:solve1(函数1/1)
[+] 最快............:0.00003099
[+] 最慢............: 32.38717794
[+] 平均值*............:0.00003335(平均值计算,不含最小值/最大值)

10 个结果中的第一个总是需要更长的时间才能完成,这似乎只能通过 timeit.repeat() 循环的第 2 到 10 次迭代以某种方式使用循环先前迭代的缓存结果这一事实来解释。当在 for 循环中实际使用 timeit.repeat() 来比较几种算法时,似乎只计算了一次难题的解决方案:

[+] 结果......:solve1(函数 1/3)
[+] 最快............:0.00003099
[+] 最慢............: 16.33443809
[+] 平均*.......: 0.00003263(平均计算没有最小值/最大值)

[+] 结果......:solve2(函数2/3)
[+] 最快............:0.00365305
[+] 最慢............: 0.02915907
[+] 平均值*.........:0.00647599(平均值计算,不含最小值/最大值)

[+] 结果......:solve3(函数3/3)
[+] 最快............:0.00659299
[+] 最慢............: 0.02440906
[+] 平均值*.........:0.00717765(平均值计算,不含最小值/最大值)

真正奇怪的是算法的相对速度(相对于彼此)在整个测量过程中是一致的,这表明所有算法都在计算它们自己的结果。由于大部分中间结果(在计算第一个解决方案时获得)仍然在某种缓存中,由 python 进程保留,因此性能的这种极端提高?

任何帮助/见解将不胜感激。

0 投票
1 回答
211 浏览

python - 避免在 timeit.repeat() 基准测试中进行昂贵的设置

我正在尝试测量我的一个小的 Python 代码片段的执行时间,我想知道这样做的最佳方法是什么。

理想情况下,我想运行某种设置(这需要很长时间),然后运行一些测试代码几次,并获得这些运行的最短时间。

timeit()似乎合适,但我不确定如何在不重新执行设置的情况下获得最短时间。演示问题的小代码片段:

0 投票
3 回答
70074 浏览

python - 使用 Python 请求测量网站加载时间

我正在尝试构建一个工具来测试我的互联网连接的延迟,更具体地说是网站加载时间。我想过使用 python requests模块来加载部分。

问题是,它没有内置功能来衡量获得完整响应所需的时间。为此,我想我会使用该timeit模块。

我不确定的是,如果我像这样运行 timeit:

我真的在测量响应到达所花费的时间,还是构建、发送、接收请求所花费的时间?我猜我可能会忽略那个执行时间,因为我正在测试延迟很长(约 700 毫秒)的网络?

有没有更好的方法来以编程方式做到这一点?