使用链接在一起的大量生成器是否有任何性能方面的考虑因素,而不仅仅是单个生成器。
例如:
def A(self, items):
for item in self.AB(items):
if object.A():
yield item
def AB(self, items):
for object in self.ABC(objects):
if object.A() or object.B():
yield object
def ABC(self, objects):
for object in objects:
if object.A() or object.B() or object.C():
yield object
显然,调用A(objects)
将会经历三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码重用得更好。任何人都可以表明使用这种技术会对性能产生重大影响吗?
答案 0 :(得分:2)
链接生成器没有任何问题,但在这个例子中,A没有理由调用self.AB,它可以循环遍历项目以获得相同的结果。
您应尽可能清楚地编写代码,如果速度慢,请使用分析器确定瓶颈所在。像这样的受试者的例子与现实相差太远,不能成为有用的绩效指标。