python3比python2慢(leetcode体验)

在做leetcode时,习惯性地使用python3,因为python2准备停止支持了嘛,python3才是未来。

但是。。。。。。。。。。

被一道题卡超时了,一直困在其中,上网搜python对于该题的题解,

非常神奇的事情发生了。。。。

别人能过的为什么我偏偏不能过,搜了好几个题解在我提交后都超时。。

后来看到一些题解里有xrange这个函数,这时python2才有的,

于是我尝试用python2提交,结果终于过了,泪流满面。。。。

但过了是一回事,为什么python3比python2慢呢?

我进行了大量的搜索,总结为:

Python 内部用到 dict 的地方很多啊,比如说在交互模式下,`a=1`一共会创建并销毁 15 个字典对象。

我这里测试 2.7 和 3.5 dict 的效率差很多啊

具体还是应该看代码吧,比如 Python 3 中大量使用了生成器,`xrange`取消了,

`range`的效果等同于 Python 2 中的`xrange`,

但是 Python 3 的`range`要比 Python 2 的`xrange`慢不少,看这里: 

``` 
$ python3 -m timeit -s"r = range(33550336)" "for i in r: pass" 
10 loops, best of 3: 835 msec per loop 

$ python2 -m timeit -s"r = xrange(33550336)" "for i in r: pass" 
10 loops, best of 3: 464 msec per loop 
``` 

猜你喜欢

转载自blog.csdn.net/fcsfcsfcs/article/details/80389473