2011-08-08 29 views
10

我喜欢用Java编写真正可读的代码。为此,我使用了构建器模式并且有很多静态方法。但是在某些时候,我会调用或链接很多方法,所以我想出了这个问题:它是否有任何性能问题调用了很多方法?方法调用如何影响Java中的性能?

+0

如果您正在使用代码的人不知道是否存在可衡量的严重性能影响,我们应该如何知道? –

回答

9

该方法的作用远远大于方法调用本身。这是一个过早的优化,你会被建议避免。

您不知道JVM本身内置的运行时优化会如何影响性能。他们会比你的尝试更聪明。

编写您的应用程序,剖析它,看看是否有任何明显的改进。重复,直到表现可以接受。

1

一般来说:不是真的。

然而,一个能够提供大量不必要开销的情况是在执行大的递归调用时。如果是这种情况,性能是一个问题,你应该研究一种动态编程方法或者实现你自己的堆栈。

否则,您的方法在其逻辑中应该相当复杂,以超过其获得的任何性能。

+0

您是否有任何证据支持您有关大型递归调用的说法? [以下内容暗示](http://www.ahmadsoft.org/articles/recursion/index.html) – nerdytenor

+2

@nerdytenor:是的,我从个人经历做起(我不会让你知道细节,而是鼓励你参考基准如果你有任何疑问,你自己吧)。请阅读您链接的帖子的底部,其中解释了性能差异。这里是一个更准确的比较(在同一个网站上):http://www.ahmadsoft.org/articles/recursion/ubuntu.html – tskuzzy

+0

+1为链接 – nerdytenor

4

可读性几乎总是要走的路。对函数调用的性能有影响,但不可读的代码可能会受到其他实现问题的影响,这些问题的性能会受到更高的影响。

在适当的地方使用关键词final,以便建议为这些函数内联。

您不想使用大量函数调用的情况是严密的循环。发生数十万次的事情。如果需要优化软件,通常可以优化这些地方。

+1

同意在这里,并重申:除非你使数百几秒钟内完成数千次呼叫,这不是您需要担心的事情。 –