为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Timeit模块

如何使用Timeit模块

炎炎设计 2019-07-03 11:29:59
如何使用Timeit模块我理解什么概念timeit但是我不知道如何在我的代码中实现它。我如何比较两个函数,比如说insertion_sort和tim_sort..timeit?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

路途时差工作原理是只运行一次安装代码,然后对一系列语句进行重复调用。因此,如果您想测试排序,则需要进行一些检查,以便本地排序中的一次传递不会影响已经排序的数据的下一次传递(当然,这将使蒂姆塞德真的很出色,因为当数据已经部分排序时,它的性能最好)。

下面是如何设置用于排序的测试的示例:

>>> import timeit>>> setup = '''
import random

random.seed('slartibartfast')
s = [random.random() for i in range(1000)]
timsort = list.sort
'''>>> print min(timeit.Timer('a=s[:]; timsort(a)', setup=setup).repeat(7, 1000))0.334147930145

注意,该系列语句在每次传递时都会生成未排序数据的新副本。

另外,请注意运行度量套件七次并只保留最佳时间的计时技术-这确实有助于减少系统上运行的其他进程造成的测量失真。

这些是我正确使用时间的技巧。希望这会有所帮助:)


查看完整回答
反对 回复 2019-07-03
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果你想用timeit在交互式Python会话中,有两个方便的选项:

  1. 使用IPython壳。它的特点是方便。%timeit特殊职能:

    In [1]: def f(x):
       ...:     return x*x   ...: In [2]: %timeit for x in range(100): f(x)100000 loops, best of 3: 20.3 us per loop
  2. 在标准Python解释器中,可以通过从__main__在安装语句中:

    >>> def f(x):...     return x * x 
    ... >>> import timeit>>> timeit.repeat("for x in range(100): f(x)", "from __main__ import f",
                      number=100000)[2.0640320777893066, 2.0876040458679199, 2.0520210266113281]


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 1120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信