我很偶然地注意到,在Python 2.7和3.5中,从大型数据文件生成类的简单程序运行速度要快得多。我读了here使用"无限精度"整数应该归咎于简单枚举的减速,但即使我尝试实例化这个类的简单测试,我发现Python 3明显变慢了:
class Benchmark(object):
def __init__(self):
self.members = ['a', 'b', 'c', 'd']
def test():
test = Benchmark()
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
我想也许这与每个类实例的大小有关,但Python 3实例小于2(56对64)
$python3 benchmarks.py
0.7017288669958361
$python benchmarks.py
0.508942842484
我尝试了很多关于这个主题的变体,包括在不同的机器上使用3.4,并且仍然得到相同的结果。有什么想法会发生什么?
答案 0 :(得分:3)
你没有测量类实例化时间,你正在测量类实例化,加上赋值,加上列表创建,......
这是一个正确的基准:
$ python -m timeit -s 'class C(object): pass' 'C()'
10000000 loops, best of 3: 0.0639 usec per loop
$ python3 -m timeit -s 'class C(object): pass' 'C()'
10000000 loops, best of 3: 0.0622 usec per loop
正如您所看到的,Python 3的速度要快得多。