繁体   English   中英

就性能而言,在 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 周期或 memory 占用空间方面会快多少。

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

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

总的来说,快速便宜的东西可能取决于上下文、语言、操作系统、硬件或运行代码环境中的许多不同因素。 请记住这一点。 另一个混淆因素是 Python 是一种编译语言

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM