1
2
3
4
5
6
7
8
9
10
|
import profile def fun(): x = range ( 100000000 ) def f(): s = 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 i in range ( 100000000 ): pass def f(): for i 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)