【问题标题】:Does returning in contrast to not returning a value from a method have impact on performance?与不从方法返回值相比,返回是否会影响性能?
【发布时间】:2019-04-11 20:19:02
【问题描述】:

如果i.e.有一个对象的添加方法,并且为了构造方便,

Objeckt o = new Objeckt().add(new Element());

使用该方法是否需要更多费用

Objeckt add(Element e){
    return this;
}

而不是

void add(Element e){

}

?

【问题讨论】:

  • 您正在设计什么样的系统,对性能如此关键?
  • 我只是想知道它是否有任何区别。或者如果该值为无(void),它仍然需要返回一个空白。
  • 对不起,但我投票决定关闭这个问题,因为它不清楚。这个问题的答案取决于所使用的 jvm 和操作系统。请查看技术文档如何执行字节码,有时还通过即时编译进行优化。
  • 基本上是there are different bytecode instructions depending on the datatypes to return。我看不出为什么必须返回像 blank value 这样的东西。

标签: java optimization methods return


【解决方案1】:

感谢@ventiseis:

Object return

(类似地,原语返回ireturnlreturnfreturndreturn

如果没有抛出异常,则从当前帧(第 2.6 节)的操作数堆栈中弹出值并压入调用者帧的操作数堆栈。当前方法的操作数堆栈上的任何其他值都将被丢弃。

void return

如果没有抛出异常,则丢弃当前帧的操作数堆栈(第 2.6 节)中的所有值。

规范规定:

如果返回一个值,则将该值从操作数堆栈中弹出并压入调用帧的操作数堆栈。

如果没有返回值,则不会弹出或推送任何内容。

因此不返回值应该更有效。

当然,这个答案不考虑优化,以防调用框架中没有使用返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2012-11-26
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2015-09-01
    相关资源
    最近更新 更多