我知道这是一个模糊的标题 - 也许是因为这个问题很模糊!
我有一个python程序遍历每个项目(我定义的对象)在每个对象上执行函数的集合中。
每次迭代的时间随着它的进展而减慢,我无法理解。
我认为存储函数的输出需要更长的时间但不是这样(我已经尝试修改代码以完全不存储输出以便诊断,但每次仍需要更长的时间)。
我甚至尝试将包含所有对象的集合更改为列表并以不同方式对其进行排序!
我不会每次都增加'subloops'的数量或类似的东西,也看不出为什么它需要更长的时间。我无法看到一次迭代是如何影响另一个迭代的......函数主要执行字符串连接并创建新对象。
你们中的任何一个人都有一份有用的“清单”,表明在这种情况下我可能会遗漏的事情或我可以查看的事情的建议吗?
我知道它含糊不清但是复制和粘贴的代码有点混乱!
答案 0 :(得分:1)
The function mostly just performs string concatenations and creates new objects.
执行字符串连接的方式在Python中非常重要。 Look at some benchmarks
最重要的是,如果你在循环中进行像s1+=s2
这样的天真字符串连接,这可能是你的瓶颈。但是,您还没有提供足够的细节知道。