2013-09-23 64 views
1

我目前正在通过一些非常古老的代码挖掘我的方式,以扩展它,并且我一直在遇到可能很容易返回void的方法。最臭名昭著的一个在我脑海里的线沿线的打算:使返回类型超出void的性能影响是什么?

public int dbInsert(int userID) 
{ 
    Map<String, Integer> foo = new HashMap<String, Integer>(); 
    foo.put("bar", 0); 
    foo.put("user", userID); 

    sqlInsert(foo); 
    return foo.get("bar") != null ? (Integer) foo.get("bar") : 0; 
} 

我觉得有一个很大的重新做上来了,无论如何,但我只是想知道有多大的影响剔除法这样的空白返回类型(如上面的代码片段总是返回0)会影响性能或者编译器是否会认识到冷漠并忽略它?

+4

要么是方法需要返回一个值,要么是没有。这很简单。 –

+3

你假设'sqlInsert'不修改'foo';这是合理的吗? –

+1

该代码中有足够的外部开销,将该方法更改为无效的影响将不显着,达到几个数量级。为什么你认为这个“臭名昭着”对我来说是个谜。 – EJP

回答

7

这是微不足道的。您的方法签名应根据从API使用的角度来看有意义来确定。

1

通常编译器将无法消除返回值,因为它不知道谁将使用该方法。至于性能,最好的办法是编写一个样本,并通过足够次数的循环调用它来测量它,至少可以获得几秒钟的运行时间。基于除测量以外的任何其他性能问题的答案只是受过教育的猜测。

相关问题