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()
,则所有这些都将不会有任何效果。这就是为什么您需要分析您的代码。