将方法参数传递给函数有什么影响

时间:2010-09-14 12:08:30

标签: java

通过更快地处理某种方法的能力,将方法参数传递给函数会产生什么影响。

如果某个方法需要区域设置作为输入。 您会将此声明为foo(Locale locale) foo(User user) { Locale locale = user.getLocale(); }必须比前一个慢吗?

3 个答案:

答案 0 :(得分:7)

如果你在同一个方法中出于某些其他原因需要用户,那么传递一个单独的语言环境是毫无意义的 - 如果传入不同的来自用户的区域设置。这假设getLocale是一个由字段支持的简单属性,当然。

我肯定会首先编写最简单,最逻辑的代码......像这样的微优化在性能方面很少有所不同,但经常会导致难以理解的代码。只有当您显示给定的代码部分是相关的时才进行微优化,并且只有当您证明它实现了改进时才保持优化。

以最直接的方式为您的方法提供所需的信息。如果需要用户,请将其提供给用户。如果只需要语言环境,请仅提供语言环境。如果它需要用户语言环境,但语言环境与用户关联,那么只需给用户并适当地派生语言环境。

(为了平衡,我应该指出Joe Duffy最近的博客文章in favour of optimization。我不同意该帖子的要点,但它仍然值得一读。)

答案 1 :(得分:2)

foo(Locale locale)

肯定会比以下更快:

foo(User user)
{
    Locale locale = user.getLocale();
}

因为后者涉及额外的方法调用。这并不一定意味着程序整体上会变慢,因为语言环境必须来自某个地方所以我猜测调用代码会是这样的:

Locale locale = user.getLocale();
this.foo(locale);

这导致了相同的方法调用。

答案 2 :(得分:1)

循环运行实际生产代码数百万次并测量它的速度。如果表现不够好,请

过早优化是许多邪恶的根源。不要这样做。