使用其他类中的变量比同一类中的变量慢吗?

时间:2011-08-06 17:32:27

标签: java performance

我正在制作游戏,最近我组织了所有代码。 对于绘图,我现在使用来自另一个类的变量,并且我注意到在重组时性能的下降非常重要。

所以我想知道:访问另一个类中的变量比访问同一个类中的变量要慢吗?

注意:我有一个非常大的数字和不同的粒子要绘制,所以要访问很多变量。

2 个答案:

答案 0 :(得分:5)

如果没有关于您的计算机环境和特定代码的具体信息,真的很难回答。以下是我的建议:

  • 第1步:找到衡量差异的方法。
  • 第2步:测量
  • 第3步:根据您的测量采取行动

注意:如果你无法衡量差异,但只是“感觉”,你永远不会真正知道这个问题是真实的还是想象的。

答案 1 :(得分:3)

通常即使通过方法读取不同对象中的字段也没有任何区别。只要您的负载在特定的“热点”上升,Java热点编译器就会立即优化字节码,这样它就不再有所作为。

这就是JVM如此快速发展的原因之一。这也是人们告诉你以下内容的原因之一:

  • 不要为了性能而微优化Java代码,因为你正在假设某些东西。首先尝试寻找证据
  • 特别要避免像内联方法这样最简单的事情。 Hotspot已经完成所有这些
  • 您的代码越简单,越清晰,Java热点编译器可以为您提供更多关于性能的信息

如果您发现性能问题,请务必先检查内存问题。除了增加运行时复杂性的算法中的错误...... 性能问题的最常见原因(首先检查它们):

  • 耗尽堆空间(及相关:永远垃圾回收,高CPU负载)。您可以使用visualvm及其插件等工具进行检查。
  • 争用:线程争用相同资源的并发问题。如果你没有I / O等待和空闲cpu,这可能是你的问题。使用top等工具来检查。
  • 配置了足够的内存,但是由于交换(物理内存太少)或者您的软件等待I / O,您的系统会执行大量I / O操作。检查I / O等待

特别是如果您确实拥有大量数据,变量,粒子,请先检查明显的事情: - )

祝你好运!