Sol*_*une 9 python performance for-loop range python-3.x
所以我在处理Python中的for循环时遇到了一些麻烦 - 据我所知,随着时间的推移,它们会越来越慢.我在一个范围内循环,随着时间的推移,循环显着减慢.如果重要的话,这是在游戏引擎内部完成的.谁能告诉我这是什么问题?
这是一个简单的例子.
for x in range(xs): # xs, ys, and zs are all pre-determined size values
for z in range(zs):
for y in range(ys):
vp = [x * vs, y * vs, z * vs]
v = Cube(vp)
Run Code Online (Sandbox Code Playgroud)
这个过程的初始速度很好,但随着时间的推移,循环速度变慢.我知道它不是游戏引擎的Rasterizer,因为当循环完成时,引擎的其余部分以60 FPS运行.那可能是什么问题呢?
编辑:我使用的是Python 3,所以没有xrange.
编辑2:对于此示例,vs为1.0,并且xs,ys和zs的预定大小值均为20.
agf*_*agf 15
这是"需要更多信息"的另一个案例.但是,Python有一种标准的方式来有效地构造这样的嵌套循环itertools.product:
from itertools import product
for x, y, z in product(xrange(xs), xrange(zs), xrange(ys)):
vp = [x * vs, y * vs, z * vs]
v = Cube(vp)
Run Code Online (Sandbox Code Playgroud)
它不需要range每次在内循环中构造s.我也切换你使用range到xrange,因为它是大范围的更好,虽然这是真的无关紧要product.
@JohnZ的问题很好 - 如果你的"预定大小值"非常大,特别是如果vs它也很大,你可能会构建一些大的值,并且可能需要很长时间Cube来处理它们.
我怀疑循环本身是否正在减速,但数字越来越大,所以你的计算可能会.