Java中方法调用对性能有何影响?

12

我喜欢使用Java编写易读的代码,为此我使用建造者模式并编写大量静态方法。但是,有时我需要调用或链接很多方法,因此我想知道:频繁调用方法是否会影响性能?


如果你作为代码的使用者都不知道是否存在可衡量且严重的性能影响,那我们又怎么知道呢? - user unknown
3个回答

10

方法所做的事情比方法调用本身产生的影响要大得多。这是一种过早的优化,建议您避免。

您不知道内置在JVM中的运行时优化如何影响性能。它们比您的尝试要聪明得多。

编写您的应用程序,对其进行分析,并查看是否有任何明显的改进可以进行。重复此过程,直到性能可接受。


4

可读性几乎总是首选。函数调用会对性能产生影响,但不易读的代码可能会受到其他实现问题的影响,这些问题将带来更大的性能损失。

在适当的位置使用关键字final,以建议为这些函数进行内联处理。

不要在紧密循环中频繁使用函数调用。这种情况会发生数十万次。通常,如果需要优化软件,则可以在最后优化这些位置。


1
同意这里,并再次强调:除非您在几秒钟内进行数十万次调用,否则您不需要担心这个问题。 - Jason Wheeler

1
一般来说:并不是真的。
然而,有一种情况会导致显著的不必要开销,那就是进行大量递归调用。如果是这种情况,并且性能是一个问题,你应该考虑采用动态编程方法或实现自己的堆栈。
否则,你的方法在逻辑上应该足够复杂,以抵消任何由此带来的性能损失。

你有任何证据支持你关于大量递归调用的说法吗?以下内容则暗示了相反的情况:http://www.ahmadsoft.org/articles/recursion/index.html - nerdytenor
2
@nerdytenor:是的,我从个人经验中知道这一点(我不会让你感到无聊,而是鼓励你如果有任何疑问就自己进行基准测试)。请阅读您链接的帖子底部,其中解释了性能差异。这里是一个更准确的比较(在同一网站上):http://www.ahmadsoft.org/articles/recursion/ubuntu.html - tskuzzy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接