java – 调用链函数会产生开销吗?
作者:互联网
调用函数链有开销吗?
例如,在以下for循环中:
for(int i = 0; i < n; i++)
{
var=object.method1().method2().method3();
}
第一个效率低于第二个吗?
var = object.method1().method2();
for(int i = 0; i < n; i++)
{
var.method3();
}
我关心的是知道函数调用/返回的开销是多少,而不是函数在内部做的事情.
谢谢.
解决方法:
你的两个片段在功能上并不相同.
你的原始问题被标记为c / Java,所以让我们继续.功能语言可能会以不同方式对待它.
通常第二个版本更快,因为method1().method2()只需要调用一次.在C和Java中,编译器很难确定调用method1().method2()是否有任何副作用.考虑一种以用户输入为例的方法.
如果这些方法有副作用,则编译器无法对var = object.m1().m2().m3()中的调用次数进行任何优化.
链接本身不会产生任何开销.
标签:java,c-2,performance,method-chaining 来源: https://codeday.me/bug/20190529/1176042.html