gpt4 book ai didi

python - 基准 Python 程序

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:12 28 4
gpt4 key购买 nike

我是 Python 新手。这是我的第一种解释语言。到目前为止,我曾经学习过Java。因此,当 Java 程序第一次运行时,它的执行速度比下一次要慢。reasi 正在缓存。

import time

def procedure():
time.sleep(2.5)

# measure process time
t0 = time.clock()
procedure()
print (time.clock() - t0), "seconds process time"

我试了好几次了。结果总是相等的。那么,我说的没有现金干扰并且基准非常可靠,我说得对吗?

最佳答案

做这样的基准测试是可以的,对于运行“长时间”且非常稳定的函数来说,准确性已经足够了,就像你的例子一样。但也有一些陷阱:对于“快速”函数(如空函数),您会遇到精度限制。对于执行时间不同的函数(例如 net i/o),您必须多次测量才能找到最小/最大/平均运行时间。除此之外,最佳使用的时钟因平台而异:在 Windows 上,time.clock() 是首选,在 *nix 上,time.time()。

幸运的是,有一个模块可以处理所有这些:timeit:

>>> import time
>>> def procedure():
pass

>>> def time_this(f):
t0=time.clock()
f()
print((time.clock() - t0), "seconds process time")


>>> time_this(procedure)
1.9555558310457855e-06 seconds process time
>>> time_this(procedure)
1.9555557742023666e-06 seconds process time
>>> time_this(procedure)
1.9555557742023666e-06 seconds process time
>>> import timeit
>>> timeit.Timer(procedure).timeit()
0.09460783423588737
>>> timeit.Timer(procedure).repeat()
[0.09791419021132697, 0.09721947901198291, 0.09598943441130814]

你可能想看看它的来源。或者只是使用它 ;)

至于缓存:Python 代码在首次使用时会编译为字节码。默认情况下会缓存此字节码 - 但只要您不在函数中执行 import,这就不会影响您的基准测试。

关于python - 基准 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com