zoukankan      html  css  js  c++  java
  • 练习四十八:面向对象执行效率

    按执行效率从高到底排序:f2,f1,f3
    要求证明这个答案是对的
    所以要分析代码的性能,计算出性能时间

    方法一:使用python性能分析模块 cProfile

      1 import random
      2 def f1(lin):
      3     l1 = sorted(lin)
      4     l2 = [i for i in l1 if i<0.5]
      5     return [i*i for i in l2]
      6 def f2(lin):
      7     l1 = [i for i in lin if i<0.5]
      8     l2 = sorted(l1)
      9     return [i*i for i in l2]
     10 def f3(lin):
     11     l1 = [i*i for i in lin]
     12     l2 = sorted(l1)
     13     return [i for i in l1 if i<(0.5*0.5)]
     14 
     15 if __name__ == "__main__":
     16     import cProfile
     17     lin = [random.random() for i in range(10000)]
     18     cProfile.run('f1(lin)')
     19     cProfile.run("f2(lin)")
     20     cProfile.run('f3(lin)')
     21 

    执行结果:

             7 function calls in 0.007 seconds
    
       Ordered by: standard name
    
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
            1    0.000    0.000    0.007    0.007 <ipython-input-2-b2915fa74d28>:2(f1)
            1    0.001    0.001    0.001    0.001 <ipython-input-2-b2915fa74d28>:4(<listcomp>)
            1    0.000    0.000    0.000    0.000 <ipython-input-2-b2915fa74d28>:5(<listcomp>)
            1    0.000    0.000    0.007    0.007 <string>:1(<module>)
            1    0.000    0.000    0.007    0.007 {built-in method builtins.exec}
            1    0.006    0.006    0.006    0.006 {built-in method builtins.sorted}
            1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
    
    
             7 function calls in 0.005 seconds
    
       Ordered by: standard name
    
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
            1    0.000    0.000    0.004    0.004 <ipython-input-2-b2915fa74d28>:6(f2)
            1    0.001    0.001    0.001    0.001 <ipython-input-2-b2915fa74d28>:7(<listcomp>)
            1    0.001    0.001    0.001    0.001 <ipython-input-2-b2915fa74d28>:9(<listcomp>)
            1    0.000    0.000    0.005    0.005 <string>:1(<module>)
            1    0.000    0.000    0.005    0.005 {built-in method builtins.exec}
            1    0.003    0.003    0.003    0.003 {built-in method builtins.sorted}
            1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
    
    
             7 function calls in 0.008 seconds
    
       Ordered by: standard name
    
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
            1    0.000    0.000    0.008    0.008 <ipython-input-2-b2915fa74d28>:10(f3)
            1    0.001    0.001    0.001    0.001 <ipython-input-2-b2915fa74d28>:11(<listcomp>)
            1    0.001    0.001    0.001    0.001 <ipython-input-2-b2915fa74d28>:13(<listcomp>)
            1    0.000    0.000    0.008    0.008 <string>:1(<module>)
            1    0.000    0.000    0.008    0.008 {built-in method builtins.exec}
            1    0.005    0.005    0.005    0.005 {built-in method builtins.sorted}
            1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

    方法二:使用time模块,我们只修改主函数

      1 if __name__ == "__main__":
      2     import time
      3     lin = [random.random() for i in range(10000)]
      4     t1 = time.time()
      5     f1(lin)
      6     t2 = time.time()
      7     f2(lin)
      8     t3 = time.time()
      9     f3(lin)
     10     t4 = time.time()
     11     print('f1运行时间:',t2-t1)
     12     print('f2运行时间:',t3-t2)
     13     print('f3运行时间:',t4-t3)

    执行结果:

    f1运行时间: 0.0059967041015625
    f2运行时间: 0.003997087478637695
    f3运行时间: 0.00999307632446289
  • 相关阅读:
    Apache TomEE 1.5.1 发布,不只是维护更新
    Aspose.Pdf for .NET 7.6.0 发布
    Teiid Designer 8.0 Final 发布
    北大和人大两年整理出来的阅读书单
    关于写博
    Tc中 filter分类器中优先级prio (pref)
    Shell script中eval的使用
    给Linux添加默认路由
    localhost 与 127.0.0.1 的区别
    今天刚开通的博客,很是高兴,新手进入编程世界 ,大家多多指教!
  • 原文地址:https://www.cnblogs.com/pinpin/p/10152122.html
Copyright © 2011-2022 走看看