【发布时间】:2011-08-15 08:42:35
【问题描述】:
我们有以下代码:
String templateQuery = "select * from my_table where col1=$1 or col2 like '%$2.$1'";
String tmp = templateQuery;
for(int i=1;i<=maxCols;i++) {
tmp = tmp.replaceAll("\\$"+i, data[i-1]);
}
这段代码运行良好,因为maxCols 永远不会超过 10。但我的同事不同意我的说法,即这段代码消耗了太多内存。你能帮助我们吗?
编辑:
我已经用一个非常现实的模板查询更改了初始模板查询。其次,templateQuery 可能是一个 big 字符串。
编辑 2: 感谢那些指出SQLInjection问题的人。
【问题讨论】:
-
定义“工作正常”。并定义“内存过多”。
-
就“内存太大”而言,消耗的临时内存应该远远小于10KB,价值不到0.1美分的内存;)
-
@Peter @Oli templateQuery 可能比示例中的要大得多。
-
所以如果它是 100K,那就是 1 美分的临时内存。 ;)
标签: java string performance replace