python 3.3,2.7和2.6 - 基准不一致的结果.怎么解决?

Căt*_*ilă 1 python

我用这个python脚本:

python2.6和2.7

for i in xrange(1000000):print i
Run Code Online (Sandbox Code Playgroud)

python3.3

for i in range(1000000):print(i)
Run Code Online (Sandbox Code Playgroud)

结果:

python 2.7

real    1m15.973s
user    0m3.392s
sys 0m6.384s
Run Code Online (Sandbox Code Playgroud)

python 2.6

real    1m15.860s
user    0m3.064s
sys 0m6.296s
Run Code Online (Sandbox Code Playgroud)

使用python 3.3我多次测试脚本,我收到了这种运行差异.

python 3.3

real    1m34.235s
user    0m10.668s
sys 0m8.988s

real    1m29.431s
user    0m10.304s
sys 0m9.512s

real    1m12.528s
user    0m10.568s
sys 0m9.004s

real    1m4.193s
user    0m9.688s
sys 0m8.812s

real    1m18.332s
user    0m9.728s
sys 0m9.132s
Run Code Online (Sandbox Code Playgroud)

之后我再次尝试python 2.6,我得到了这个:

real    0m45.003s
user    0m3.056s
sys 0m5.956s
Run Code Online (Sandbox Code Playgroud)

对2个python脚本3.3和2.7(或2.6)进行基准测试的最佳方法是什么.

Mar*_*ers 7

使用该timeit模块比较小型Python代码段.它避免了常见的陷阱,使时间值具有可比性.

但是,大多的定时写入速度到sys.stdout定时时print i(以及在Python 3中,编码到终端的编解码器).