for i in vr_world.getNodeNames():
    if i != "_error_":
         World[i] = vr_world.getChild(i)


vr_world.getNodeNames()返回了一个巨大的列表,vr_world.getChild(i)返回了特定类型的对象。

这需要很长时间才能运行,是否有提高效率的方法呢?我曾经看到过循环的单线应该被认为更快。有想法吗?

最佳答案

kaloyan建议使用发电机。这就是为什么有帮助的原因。

如果getNodeNames()构建列表,则循环基本上遍历该列表两次:一次构建列表,一次遍历列表。

如果getNodeNames()是一个生成器,则您的循环永远不会建立该列表。而不是创建项目并将其添加到列表中,而是创建项目并将其产生给调用方。

是否有帮助取决于两点。首先,必须有可能将getNodeNames()实现为生成器。我们对该功能的实现细节一无所知,因此无法确定是否是这种情况。接下来,您要遍历的项目数量必须很大。

当然,如果事实证明所有这一切中的耗时操作都是vr_world.getChild(),则所有这些都将不会有任何效果。这就是为什么您需要分析您的代码。

10-06 14:26