Python 为什么继承比委派更快?
我正在使用NetworkX处理大型图形。我想序列化/反序列化这些图,我可以使用cPickle高效地实现这一点。但是,当我使用委派而不是继承时,我注意到了一个性能损失,例如:Python 为什么继承比委派更快?,python,Python,我正在使用NetworkX处理大型图形。我想序列化/反序列化这些图,我可以使用cPickle高效地实现这一点。但是,当我使用委派而不是继承时,我注意到了一个性能损失,例如: class A: def __init__(self, **kwargs): self.graph = Digraph() class A(DiGraph): def __init__(self, **kwargs): DiGraph.__init__(self, **kwargs)
class A:
def __init__(self, **kwargs):
self.graph = Digraph()
class A(DiGraph):
def __init__(self, **kwargs):
DiGraph.__init__(self, **kwargs)
稍后,我使用cPickle.loads检索图形并将其加载到内存中。我对加载时间进行了基准测试,委托风格图的加载速度比继承风格慢2倍。性能对我来说是个问题,我想知道为什么会发生这种情况。委派意味着您拥有的对象数量是原来的两倍 如果没有继承,序列化格式如下所示:
A {graph: [pointer +1]}
Digraph {name:'mygraph', nodes:..., edges:...}
对于继承,它更像:
A {name:'mygraph', nodes:..., edges:...}