java性能优化方案4——不要调用高开销方法

4、不要调用高开销方法
有些方法的开销很大。以 N.O.P.E 分支为例,我们没有提到叶子的相关方法,不过这个可以有。假设我们的JDBC驱动需要排除万难去计算 ResultSet.wasNull() 方法的返回值。我们自己实现的SQL框架可能像下面这样:
if (type == Integer.class) {

result = (T) wasNull(rs,
    Integer.valueOf(rs.getInt(index)));

}

// And then...
static final T wasNull(ResultSet rs, T value)
throws SQLException {

return rs.wasNull() ? null : value;

}
在上面的逻辑中,每次从结果集中取得 int 值时都要调用 ResultSet.wasNull() 方法,但是 getInt() 的方法定义为:
返回类型:变量值;如果SQL查询结果为NULL,则返回0。
所以一个简单有效的改善方法如下:
static final T wasNull(

ResultSet rs, T value

)
throws SQLException {

return (value == null ||
       (value.intValue() == 0 && rs.wasNull()))
    ? null : value;

}
这是轻而易举的事情。
小结
将方法调用缓存起来替代在叶子节点的高开销方法,或者在方法约定允许的情况下避免调用高开销方法。

上一篇:使用 ABAP 代码创建 CRM 订单 subject


下一篇:美国部署最新超级电脑 每秒运算5340万亿次