在虚空中使用返回类型会对性能产生什么影响?

时间:2013-09-23 10:50:38

标签: java performance

我正在挖掘一些非常旧的代码,以便扩展它,并且我不断遇到很容易返回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;
}

我认为无论如何都会有一个很大的重做,但我只是想知道将这样的方法剥离到void返回类型(因为上面的代码片段始终返回0)会影响性能或是否编译器会识别无差异并忽略它吗?

2 个答案:

答案 0 :(得分:6)

这可以忽略不计。您的方法签名应根据API使用的角度确定。

答案 1 :(得分:2)

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