小编gsb*_*eng的帖子

为什么Python 3比Python 2慢得多?

我一直试图理解为什么Python 3在某些情况下与Python 2相比实际上需要花费很多时间,下面是我从python 3.4到python 2.7验证的少数情况.

注意:我已经解决了一些问题,比如为什么Python3中没有xrange函数?在python3比python2慢得多环路比同一代码在Python3慢Python2,但我觉得我没有得到这背后问题的实际原因.

我已经尝试过这段代码来展示它是如何产生差异的:

MAX_NUM = 3*10**7

# This is to make compatible with py3.4.
try:
    xrange
except:
    xrange = range


def foo():
    i = MAX_NUM
    while i> 0:
        i -= 1

def foo_for():
    for i in xrange(MAX_NUM):
        pass
Run Code Online (Sandbox Code Playgroud)

当我尝试用py3.4和py2.7运行这个程序时,我得到了以下结果.

注意:这些统计数据来自64 bit具有2.6Ghz处理器的计算机,并使用time.time()单循环计算时间.

Output : Python 3.4
-----------------
2.6392083168029785
0.9724123477935791

Output: Python 2.7
------------------
1.5131521225
0.475143909454
Run Code Online (Sandbox Code Playgroud)

我真的不认为出现了适用于变更whilexrange从2.7到3.4,我知道range已经开始作为对xrange在py3.4但文件说,

range() …

python performance cpython python-2.7 python-3.x

36
推荐指数
1
解决办法
2万
查看次数

Python用于全局空间中的循环性能与函数内部的循环性能

我一直在努力理解Python的循环性能,在这里我发现,对于在全局空间中具有相同迭代的循环,与函数内部的迭代相比需要花费很多时间.

import time

MAX_NUM = 50000000

# Running for loop in global space
start = time.time()

for i in xrange(MAX_NUM):
    pass

print time.time() - start


# Running th same kind of loop within a function
def foo():
    for i in xrange(MAX_NUM):
        pass

start = time.time()
foo()
print time.time() - start
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,我目睹了执行时​​间的巨大差异.

2.00527501106
0.811304092407
Run Code Online (Sandbox Code Playgroud)

我想知道是什么让执行时间产生巨大差异?循环性能如何影响全局空间写入函数内部?

python python-2.7 python-3.x

10
推荐指数
0
解决办法
81
查看次数

标签 统计

python ×2

python-2.7 ×2

python-3.x ×2

cpython ×1

performance ×1