zoukankan      html  css  js  c++  java
  • python运行时间计算之timeit

    timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)

      stmt:statement,即使要执行的东西

      setup:赋值予stmt中某些不明确的变量对象,如果stmt已经足够明确了,那就可以省略

      timer:

      number:运行的次数

    e.g1:setup是如何用的

      >>> import timeit
      >>> timeit.timeit('char in text', setup=' text = "sample string"; char = "g" ')    #此地就是setup分别对stmt中的char与text两个变量赋予了值,注意,多附值语句用’;‘相隔
        0.41440500499993504
      >>> timeit.timeit('text.find(char)', setup=' text = "sample str"; char = "g" ')
        1.7246671520006203

    e.g2:如何运行一段字符串型代码

      >>> s = """
      ... try:
      ...     str.__bool__
      ... except AttributeError:
      ...     pass
      ... """
      >>> timeit.timeit(stmt=s, number=100000)
        0.9138244460009446
      >>> s = "if hasattr(str, '__bool__'): pass"
      >>> timeit.timeit(stmt=s, number=100000)
        0.5829014980008651
    

    e.g3:如何运行函数以及类的方法

      运行函数:

        IDE中:

          s="""
          def multinumber(a,b):
            return a*b
          """

          print( timeit.timeit('multinumber(3,4)', setup= s) )

        命令行中:

          >>> timeit.timeit( "f()" , """
          ... def f():
          ...   pass
          ... """ )
          0.13721893899491988

      运行类方法:

        IDE中:

        s="""
        class SomeClass:
         def method(self):
          pass
        """

        print(timeit.timeit( "SomeClass().method", s ))

        命令行中:

          >>> timeit.timeit( "obj.method()", """
          ... class SomeClass:
          ...   def method(self):
          ...     pass
          ... obj= SomeClass()        #注,此setip中即完成了类定义,还完成了赋值
          """)
            0.1980541350058047

    其中用的最多应该就是.eg3了,因为大量情况下我们需要用它来看一个函数的运行时间,或者是用类实现了一种数据结构类型,查看其各种方法的时间

  • 相关阅读:
    HDU-2262 Where is the canteen 概率DP,高斯消元
    HDU-4418 Time travel 概率DP,高斯消元
    无人驾驶相关数据集
    C++——编译器运行过程
    C++——Struct 和 Union区别
    常用linux指令
    无人驾驶——定位
    Ubuntu 没有 无线网 RTL8821ce 8111 8186
    无人驾驶之传感器融合算法
    LIN通讯
  • 原文地址:https://www.cnblogs.com/pengsixiong/p/5329257.html
Copyright © 2011-2022 走看看