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

标签 python time timeit

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

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

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

是否有某种方法可以传入已创建的对象,以便在设置参数中对其进行计时?否则,我该如何处理设置代码花费大量时间的情况,并且我不希望它模糊我实际尝试测试的代码块?

我是否以错误的方式处理这个问题?

最佳答案

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

>>> 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/

相关文章:

python - 使用 python request.put 上传 csv 类型数据而不读取保存的 csv 文件?

c++ - Unixtime 转换为可比时间

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

python - Timeit 在函数内部不起作用

python - 读取多个txt文件,然后将每个文件保存为xlsx文件,每个文件具有相同的标题

python - 使用Python中的生成器深度优先遍历树

python - Windows 10在启动时运行python程序

PHP - strftime(忽略分钟和秒)?

c - sinf() 比 <math.h> 中的 sin() 快?

arrays - 尝试从正态分布的数字生成伪随机数组/矩阵时出现问题