gpt4 book ai didi

python - Timeit 模块 - 将对象传递给设置?

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:35 31 4
gpt4 key购买 nike

我正在尝试使用 timeit 模块来计算分析数据的算法的速度。

问题是我必须运行一些设置代码才能运行该算法。具体来说,我必须从数据库中加载一些文档,并将其转换为矩阵表示。

timeit 模块似乎不允许我传入矩阵对象,而是强制我在设置参数中重新设置它。不幸的是,这意味着我的算法的运行时间被预处理的运行时间模糊了。

有没有办法传入已经创建的对象,在设置参数中计时?否则,我该如何处理设置代码花费大量时间的情况,并且我不希望它模糊我实际尝试测试的代码块?

我是不是用错了方法?

最佳答案

您的算法的运行时间不会被预处理的运行时间模糊化。这可以证明为:假设我在 __main__ 模块中声明了一个 list 并运行 timeit 来查找此 list 中某些项目的索引。但我也需要将 list 传递给 timeitlist 传递是一种预处理。 timeit 返回的时间显示 0.26 秒(见下面的代码)。现在,如果 timeit 也计算了预处理时间(从 __main__ 导入列表),那么结果将近 1.1 秒,因为导入 list 来自 __main__ 需要 0.84 秒 1000000 次迭代(见下面的代码)。 timeit 的作用是它只从 __main__ 导入 list 一次,然后计算给定迭代次数的算法所需的时间。

>>> import timeit
>>> lst = range(10)
>>> timeit.timeit('lst.index(9)', 'from __main__ import lst', number = 1000000)
0.2645089626312256
>>> timeit.timeit('from __main__ import lst', number = 1000000)
0.8406829833984375

关于python - Timeit 模块 - 将对象传递给设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683900/

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