zoukankan      html  css  js  c++  java
  • 029 timeit

    测量生成列表的时间

    • 像是 C, Js 中把函数作为参数传入
    >>> import timeit
    >>> func = '''
    ... arr = []
    ... for i in range(1000):
    ...   arr.append(i)
    ... '''
    >>> t1 = timeit.timeit(stmt=func, number=10000)  # 可近似看成函数指针
    >>> t2 = timeit.timeit(stmt="[i for i in range(1000)]", number=10000)
    >>> t1
    1.0912232999999105
    >>> t2
    0.5270981999999549
    
    • 可以看出,列表生成式比 list.append()

    测量函数运行时间

    例1

    import timeit
    
    
    def func(num=3):
        for i in range(num):
            print(f"Repeat for {i}.")
    
    
    if __name__ == "__main__":
        t = timeit.timeit(stmt=func, number=5)
        print(t)
    

    >>>

    Repeat for 0.
    Repeat for 1.
    Repeat for 2.
    Repeat for 0.
    Repeat for 1.
    Repeat for 2.
    Repeat for 0.
    Repeat for 1.
    Repeat for 2.
    Repeat for 0.
    Repeat for 1.
    Repeat for 2.
    Repeat for 0.
    Repeat for 1.
    Repeat for 2.
    0.0009049000000231899
    

    例2

    import timeit
    
    
    def func(num=3):
        for i in range(num):
            print(f"Repeat for {i}.")
    
    
    if __name__ == "__main__":
        t = timeit.timeit(stmt=func, setup="func"+"num=5", number=5)
        # t = timeit.timeit(func, setup="funcnum=5", number=5) 也行,但不直观
        print(t)
    

    >>>

    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    0.008177499999874271
    

    例3

    >>> s = '''
    ... def func(num):
    ...   for i in range(num):
    ...     print(f"Repeat for {i}")
    ... '''
    >>> t = timeit.timeit(stmt="func(num)", setup=s+"num=3", number=5)
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    Repeat for 0
    Repeat for 1
    Repeat for 2
    >>> t
    0.0020025999997415056
    
  • 相关阅读:
    详细分析MySQL事务日志(redo log和undo log)
    详细分析MySQL的日志(一)
    MySQL/MariaDB中的事务和事务隔离级别
    详细介绍MySQL/MariaDB的锁
    MariaDB/MySQL用户和权限管理
    (MariaDB)开窗函数用法
    翻译:window function(已提交到MariaDB官方手册)
    翻译:group_concat()函数(已提交到MariaDB官方手册)
    (MariaDB/MySQL)之DML(1):数据插入
    (MariaDB/MySQL)MyISAM存储引擎读、写操作的优先级
  • 原文地址:https://www.cnblogs.com/yorkyu/p/12037517.html
Copyright © 2011-2022 走看看