3

使用链接在一起的大量生成器而不是仅使用单个生成器是否有任何性能考虑。

例如:

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)将通过三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码更好地重用。谁能指出使用这种技术对性能有重大影响?

4

1 回答 1

2

链接生成器没有任何问题,但在这个例子中,A 没有理由调用 self.AB,它可以循环项目以获得相同的结果。

您应该尽可能清楚地编写代码,如果速度很慢,则使用分析器来确定瓶颈在哪里。诸如此类的人为示例与现实相去甚远,无法作为有用的绩效指标。

于 2009-04-17T11:04:33.093 回答