Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么继承比委派更快?_Python - Fatal编程技术网

Python 为什么继承比委派更快?

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)

我正在使用NetworkX处理大型图形。我想序列化/反序列化这些图,我可以使用cPickle高效地实现这一点。但是,当我使用委派而不是继承时,我注意到了一个性能损失,例如:

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:...}