• 测试命令运行时间:timeit和profile


    先说timeit

    from timeit import Timer
    def test1():
        n=0
        for i in range(101):
            n+=i
        return n
    
    def test2():
        return sum(range(101))
    
    def test3():
        return sum(x for x in range(101))
    
    if __name__=='__main__':
        t1=Timer("test1()","from __main__ import test1")
        t2=Timer("test2()","from __main__ import test2")
        t3=Timer("test3()","from __main__ import test3")
        print(t1.timeit(100000))
        # 或者
        # import timeit
        # print(timeit.timeit('test1()',"from __main__ import test1",number=100000))
        print(t2.timeit(10000))
        print(t3.timeit(10000))
        print(t1.repeat(3, 10000))
        print(t2.repeat(3, 10000))
        print(t3.repeat(3, 10000))
    

      

     输出结果:

    结果说明:

    t1=Timer("test1()","from __main__ import test1")是创建一个对象。第一个参数是要执行的语句,第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲, timeit 构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。

    t1.timeit(100000) 参数是一个测试里,将命令执行100000

    t1.repeat(3, 10000)第一个参数表示测试几次,第二个参数表示每次测试中执行重复多少次。

     详细参考:

    http://blog.csdn.net/huludan/article/details/43935873

    再说profile

    def foo():
        sum = 0
        for i in range(10000000):
            sum += i
        return sum
    if __name__ == "__main__":
           import profile
           profile.run("foo();foo()")
    

      

    输出结果:

    结果说明:

           profile的统计结果分为ncalls, tottime, percall, cumtime, percall, filename:lineno(function)等若干列:
    ncalls
    函数的被调用次数
    tottime
    函数总计运行时间,除去函数中调用的函数运行时间
    percall
    函数运行一次的平均时间,等于tottime/ncalls
    cumtime
    函数总计运行时间,含调用的函数运行时间
    percall
    函数运行一次的平均时间,等于cumtime/ncalls
    filename:lineno(function)
    函数所在的文件名,函数的行号,函数名

    详细参考:http://blog.csdn.net/gzlaiyonghao/article/details/1483728

  • 相关阅读:
    Dubbo2.0
    Dubbo--RPC框架
    ActiveMQ消息队列
    quartz开源任务调度框架
    webService
    crud最常用
    springBoot第三天
    springmvc--依赖
    springBoot第二天
    pom.xml和settings.xml的下载优先级
  • 原文地址:https://www.cnblogs.com/andy9468/p/8432680.html
Copyright © 2020-2023  润新知