Java 使用getter或将其分配给变量更有效吗?

Java 使用getter或将其分配给变量更有效吗?,java,optimization,Java,Optimization,在下面的场景中,所有3个getXxxxx方法都简单地返回该类的属性,而无需额外处理 对我来说,像我使用workLimit那样将它们分配给临时变量更有效,还是像使用getCurrentWork那样使用getter更有效 实际上,您只需要少买一个堆栈操作,这是一个微观优化,因此几乎完全没有用,除非您正在编写一个实时系统 归根结底,你实际上是在购买一个更少的堆栈操作,这是一个微观优化,因此几乎完全没有用,除非你正在编写一个实时系统 在一天结束时,profile假设getCurrentWork只是返回一

在下面的场景中,所有3个getXxxxx方法都简单地返回该类的属性,而无需额外处理

对我来说,像我使用workLimit那样将它们分配给临时变量更有效,还是像使用getCurrentWork那样使用getter更有效


实际上,您只需要少买一个堆栈操作,这是一个微观优化,因此几乎完全没有用,除非您正在编写一个实时系统


归根结底,你实际上是在购买一个更少的堆栈操作,这是一个微观优化,因此几乎完全没有用,除非你正在编写一个实时系统


在一天结束时,profile

假设getCurrentWork只是返回一个变量本身,那么性能将是相同的。我认为使用额外的变量有时会使代码更容易阅读/扫描,特别是当您有很多变量时。在这种情况下,我可能只使用getter。

假设getCurrentWork只是返回一个变量本身,那么性能将是相同的。我认为使用额外的变量有时会使代码更容易阅读/扫描,特别是当您有很多变量时。在这种情况下,我可能只使用getter。

虚拟机优化了对简单getter本身的访问,但事实上,您通常不应该关心它。因此,我通常会优化代码的可读性/可维护性,而不是性能。性能优化应该基于事实,而不是假设。

虚拟机本身优化了对简单getter的访问,但事实上,您通常不应该关心它。因此,我通常会优化代码的可读性/可维护性,而不是性能。性能优化应该基于事实,而不是假设。

我非常怀疑它是否有任何真正的区别,但最好的办法是做一个简单的测试。在什么方面效率高?如果可能,JVM会将其内联。这不是性能损失的地方。此外,getter是JIT内联的主要候选对象。如果这一个不是,差异将等同于统计噪声。停止微观优化。与其试图将运行时间减少0.1%,不如专注于发现导致程序速度降低60%的低效率。我非常怀疑这是否有任何真正的区别,但最好的方法是做一个简单的测试时间。在哪方面有效?如果可能,JVM无论如何都会将其内联。这并不是性能下降的地方。此外,getter是JIT内联的主要候选对象。如果这一个不是,差异将等同于统计噪声。停止微观优化。与其试图将运行时间减少0.1%,不如专注于发现使程序速度降低60%的低效率。我敢打赌,即使是在最真实的实时系统上,也不会有太大的区别来选择其中一个。我敢打赌,即使是在最真实的实时系统上,它仍然不会有太大的区别,更喜欢一个比另一个。
    int x = 0;
    int workLimit = entity.getCurrentWorkLimit();
    JobSet jobSet;
    JobSetQueue queue = workflowProcess.getQueue();
    while (x < workLimit && (jobSet = queue.poll()) != null) {
        getCurrentWork().addLast(jobSet);
    }