调用函数链有开销吗?例如,在以下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()
。
链接本身不会产生任何开销。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句