问题标签 [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.
python - Timeit,NameError:未定义全局名称。但我没有使用全局变量
我想测量以下代码的执行速度:
我将此代码存储在 pe1m.py 下。现在我想用 python 解释器测试文件的速度。我做了:
但我得到:
但我没有任何全局变量。
python - Python 语法:在 timeit 语句中使用循环
其中两个语句运行,而另一个因语法错误而失败。我究竟做错了什么?
python - 在 timeit 中使用分号
timeit.timeit
当我在作为字符串传递的语句参数中有异常时,我似乎无法开始工作:
这导致:
我正在使用 Python 3.3 运行它,但即使使用旧的 Python (3.2) 也会发生同样的错误。
更新:
我正在关注此文档(强调我的):
类 timeit.Timer(stmt='pass', setup='pass', timer=)
小代码片段的计时执行速度类。
构造函数采用要计时的语句、用于设置的附加语句和计时器函数。两个语句都默认为“通过”;计时器功能是平台相关的(参见模块文档字符串)。stmt 和 setup 也可能包含多个语句,用 ; 分隔。或换行符,只要它们不包含多行字符串文字。
python - 强制 timeit 自动选择语句执行的次数
在命令行中,我可以这样做:
根据文档:
如果未给出 -n,则通过尝试连续的 10 次方来计算合适的循环次数,直到总时间至少为 0.2 秒。
这很好用,但是在我的程序中使用时如何获得相同的行为timeit
?如果我省略了调用的number
参数timeit.timeit
,它将默认为1000000
.
python - Python - timeit 没有结果
我在 test.py 中编写了这个简单的代码(在 python 中)。我尝试运行 timeit 并且没有任何错误,但我没有得到有关运行时间的任何信息。你能帮助我吗 ?
我期待一个结果,例如(示例):
但我只有:
我没有 timeit 的结果。我使用 python 2.7 和 linux。
python - Python timeit 和程序输出
有什么办法可以使用timeit函数同时输出函数结果和处理时间?
现在我正在使用
但这只是输出时间而不是程序输出,它在结束时返回一些东西。我希望它输出
在同一条线上。
理想情况下,我希望能够通过运行 N 次然后输出程序结果及其平均时间来取程序的平均值(总共一个输出)
python - 我们可以在同一个模块中运行多个函数吗?
我想在同一个 Python 模块中编写多个函数,每个函数都是使用 的单独分析测试timeit
,以便我可以使用命令行参数来指定要运行的函数。一个天真的例子(profiling.py)是:
但是,当我尝试时python profiling.py foo
,我收到如下错误:
我在代码中搜索了通常的空格/制表符缩进错误,但没有找到。因此我想知道是不是因为我timeit
在函数中包装了一个测试,这是不允许的?
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 进程保留,因此性能的这种极端提高?
任何帮助/见解将不胜感激。
python - 避免在 timeit.repeat() 基准测试中进行昂贵的设置
我正在尝试测量我的一个小的 Python 代码片段的执行时间,我想知道这样做的最佳方法是什么。
理想情况下,我想运行某种设置(这需要很长时间),然后运行一些测试代码几次,并获得这些运行的最短时间。
timeit()
似乎合适,但我不确定如何在不重新执行设置的情况下获得最短时间。演示问题的小代码片段:
python - 使用 Python 请求测量网站加载时间
我正在尝试构建一个工具来测试我的互联网连接的延迟,更具体地说是网站加载时间。我想过使用 python requests模块来加载部分。
问题是,它没有内置功能来衡量获得完整响应所需的时间。为此,我想我会使用该timeit
模块。
我不确定的是,如果我像这样运行 timeit:
我真的在测量响应到达所花费的时间,还是构建、发送、接收请求所花费的时间?我猜我可能会忽略那个执行时间,因为我正在测试延迟很长(约 700 毫秒)的网络?
有没有更好的方法来以编程方式做到这一点?