python range 和 xrange 运行比较

1
2
3
4
5
6
7
8
9
10
import  profile
 
def  fun():
     =  range ( 100000000 )
 
def  f():
     =  xrange ( 100000000 )
 
profile.run( 'fun()' )
profile.run( 'f()' )                      # xrange胜出

  

1.fun()的运行结果:

   Ordered by: standard name


   ncalls  tottime  percall  cumtime  percall filename:lineno(function)

        1    1.469    1.469    1.469    1.469 :0(range)

        1    2.509    2.509    2.509    2.509 :0(setprofile)

        1    0.711    0.711    2.181    2.181 <string>:1(<module>)

        1    0.000    0.000    4.690    4.690 profile:0(fun())

        0    0.000             0.000          profile:0(profiler)

        1    0.000    0.000    1.469    1.469 test.py:22(fun)



2.f()的运行结果


   Ordered by: standard name


   ncalls  tottime  percall  cumtime  percall filename:lineno(function)

        1    0.000    0.000    0.000    0.000 :0(setprofile)

        1    0.000    0.000    0.000    0.000 <string>:1(<module>)

        1    0.000    0.000    0.000    0.000 profile:0(f())

        0    0.000             0.000          profile:0(profiler)

        1    0.000    0.000    0.000    0.000 test.py:25(f)



方案二测试:

1
2
3
4
5
6
7
8
9
10
11
12
import  profile
 
def  fun():
     for  in   range ( 100000000 ):
         pass
 
def  f():
     for  in   xrange ( 100000000 ):
         pass
 
profile.run( 'fun()' )
profile.run( 'f()' )                       #xrange 胜出



         5 function calls in 3.214 seconds

1.fun()的运行结果:

   Ordered by: standard name


   ncalls  tottime  percall  cumtime  percall filename:lineno(function)

        1    0.928    0.928    0.928    0.928 :0(range)

        1    0.471    0.471    0.471    0.471 :0(setprofile)

        1    0.000    0.000    2.742    2.742 <string>:1(<module>)

        1    0.000    0.000    3.214    3.214 profile:0(fun())

        0    0.000             0.000          profile:0(profiler)

        1    1.814    1.814    2.742    2.742 test.py:22(fun)



         4 function calls in 1.446 seconds

2.f()的运行结果

   Ordered by: standard name


   ncalls  tottime  percall  cumtime  percall filename:lineno(function)

        1    0.000    0.000    0.000    0.000 :0(setprofile)

        1    0.000    0.000    1.446    1.446 <string>:1(<module>)

        1    0.000    0.000    1.446    1.446 profile:0(f())

        0    0.000             0.000          profile:0(profiler)

        1    1.446    1.446    1.446    1.446 test.py:26(f)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值