Java JIT -- 有哪些优化可能?

3

具有学术好奇心。JIT能否接受这样的代码,识别出格式字符串是静态常量,并因此预计算切片格式字符串,从而将其优化为仅使用最小附加的StringBuilder?

public static String buildDeleteSql(BaseObject object)
{
    String table;
    String schema;

    String deleteSql = String.format(
            "DELETE FROM %s.%s WHERE %s = '%s' AND %s = '%s'",
            schema,
            table,
            BaseObject.ATTR_ID,
            StringUtils.escapeForSQLString(object.getId()),
            BaseObject.ATTR_REVISION,
            StringUtils.escapeForSQLString(object.getRevision())
        );

    return deleteSql;
}

我正在思考的假想JIT能够实现。你有考虑过特定的JVM吗? - Andy
2
这段代码呼喊着要用PreparedStatement进行重构 :) - Geoffrey De Smet
1个回答

5

理论上,JVM可能能够理解您的示例。但实际上,现有的JVM不会;这可能不是一个非常有利可图的优化领域。特别是由于字符串格式化通常用于序列化数据,在这种情况下,您可能会花费大部分时间等待I/O完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接