【发布时间】:2021-07-31 00:53:02
【问题描述】:
我有这个循环:
for i in range(self.worldWidth):
for j in range(self.worldHeight):
originalValue = self.world.world[i, j]
# Process newValue
self.world.world[i, j] = newValue
当世界大小为 (500, 500) 时,它每秒运行大约 10 次,这对于我正在做的事情来说很慢,当我尝试在 C# 中做同样的事情时,我得到了三倍的速度(每次 30 次第二)。
有没有办法让它更快?
注意:这些速度是在没有对值做任何事情的情况下计算出来的
编辑:在用 C# 进一步测试后,我得到了大约 10 倍的速度(只是第一次很慢),但在 python 中每次大约 0.07 秒
【问题讨论】:
-
世界是如何定义的?更准确地说,它的类型是什么?
-
这大约是 Python 与 C# 的数量级差异。
-
你为什么要在
i和j上循环?为什么不直接迭代self.world.world? -
self.world 是一个 World 类型的对象,它有一个名为 world (self.world.world) 的字段,它是世界保存的数据(0 到 1 之间的双精度数),抱歉混淆命名
-
听着,如果您想要关于如何加快代码速度的有效建议,您需要实际告诉我们您在做什么。
标签: python numpy loops iteration