就内存使用和 CPU 消耗而言,Python 中哪个更高效—— Dictionary 还是 Object?
背景: 我必须将大量数据加载到 Python 中。我创建了一个对象,它只是一个字段容器。创建4M 实例并将它们放入字典需要大约10分钟和大约6GB 的内存。字典准备好之后,查阅它只是一眨眼的工夫。
为了检查性能,我编写了两个简单的程序,其中一个使用对象,另一个使用字典:
对象(执行时间 ~ 18秒) :
class Obj(object):
def __init__(self, i):
self.i = i
self.l = []
all = {}
for i in range(1000000):
all[i] = Obj(i)
Dictionary (执行时间 ~ 12秒) :
all = {}
for i in range(1000000):
o = {}
o['i'] = i
o['l'] = []
all[i] = o
问题: 是我做错了什么,还是 dictionary 比 object 快?如果字典的确表现得更好,有人能解释一下为什么吗?