在性能方面,在 Pygame 中移动矩形还是创建新矩形更快?

In terms of performance, is it faster to move a rect or make a new rect in Pygame?

class 中的哪个代码会 运行 更快?

def update():
    self.rect=pygame.Rect(self.x,self.y,50,50)

def update():
    self.rect.x=self.x
    self.rect.y=self.y

简短的回答是,移动矩形更快。

长答案是,视情况而定。 与许多性能问题一样,很难知道在 CPU 周期或内存占用。

移动矩形更快在大多数情况下因为当您引用self.rect.xself.rect.y时您实际上是在引用指向存储这些值的内存的指针.更改内存中的这些值可能非常便宜且快速。此外,当您创建 new Rect 时,您必须为该对象分配一个新的内存块,这可能需要一些时间。

另一方面,Pygame 可能会重新呈现矩形在屏幕上的新位置,可能比仅创建一个新对象更便宜。如果您希望旧矩形消失,您可能需要编辑该对象的一部分以使其现在不可见。

总的来说, fastcheap 可能取决于上下文、语言、 运行 代码的操作系统、硬件或环境中的一些不同因素。请记住这一点。另一个混杂因素是 Python 是 compiled language.