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
    
  • 相关阅读:
    web性能优化
    比 git log 更强大的 git reflog
    父组件调用子组件的方法
    react-loadable 进行代码分割的基本使用
    create-react-app 使用 webpack 打包压缩失败
    mysql安装问题
    php 二维数组排序
    php 文件缓存 include vs serialize vs json_encode
    ab命令压力测试
    mysql使用的坑
  • 原文地址:https://www.cnblogs.com/yorkyu/p/12037517.html
Copyright © 2011-2022 走看看