0

假设我们有一个游戏类。

游戏类需要传递对其 spritebatch 的引用。也就是说,类调用传递它的方法,然后该方法又将它传递给其他方法,直到最终使用它。

这对性能不利吗?只使用静力学会更好吗?

不过,我看到了静态的一个明显缺点,即无法在同一个应用程序中创建重复的功能。

4

3 回答 3

1

回答您的问题并不容易,因为您没有具体提及要求,但通常我可以给您一些建议。

  1. 始终考虑封装:如果其他地方没有使用这些属性,请不要公开这些属性。
  2. 性能:对于引用类型,没有任何性能损失,因为它们已经是引用类型。但是如果您的类型是值类型,那么性能损失非常小。

因此存在设计或性能权衡,除非您的方法被调用数百万次,否则您永远不必考虑公共静态属性。

于 2013-07-09T10:33:12.970 回答
1

任何事情都有缺点优点。

从性能的角度来看,这是是坏,取决于计算密集程度以及在游戏中使用该代码的频率。

因此,这是我对主题的考虑。

传递like参数:

缺点:在堆栈上传递更多变量,将其推送到函数调用中。它非常快,但同样,这取决于您正在谈论的代码是如何使用的,所以没有它可以带来一些好处,这就是为什么插入这一点在缺点。

优点:您明确表明调用堆栈顶部的函数需要该参数用于read 和/或 write,因此查看该代码的人可以很容易地想象您的调用的语义依赖性。

像静态一样使用:

缺点:没有明确的证据(如果不是通过直接知识或良好的书面文档)哪些参数会或可能影响该函数内的微积分。

优点:对于链中的所有函数,您不会将它传递到堆栈上。

我个人建议:像参数一样使用它,因为这清楚地表明了调用代码所依赖的内容,即使会有一些可衡量的性能缺陷,也很可能与您的情况无关。但同样,正如 Rico Mariani 一直建议的那样:测量测量测量......

于 2013-07-09T10:38:05.417 回答
0

静力学大多不是最好的方法。因为如果以后你想创建多个实例,你可能会遇到麻烦。

当然,传递引用会消耗一些性能,但取决于创建实例的数量,它或多或少会很重要。除非您每隔一小段时间就创建数百万个对象,否则这可能是个问题。

于 2013-07-09T10:32:57.403 回答