JFinalJson 中有个方法
protected String toKeyValue(String key, Object value, StringBuilder sb, int depth){
..............
return sb.toString(); //sb是传入的,但返回toString()
}
而外部只有1个地方使用这个方法
protected String mapToJson(Map map, int depth) {
........
sb.append('{');
while(iter.hasNext()){
if(first)
first = false;
else
sb.append(',');
Map.Entry entry = (Map.Entry)iter.next();
toKeyValue(String.valueOf(entry.getKey()),entry.getValue(), sb, depth);// 并没有使用到返回值,而且如果用的话,也是无用的数据
}
sb.append('}');
return sb.toString();
}
我感觉这里会有性能问题,因为多次频繁调用 StringBuilder 的 toString 方法,
但又不使用,没有实证,请老大评估一下。
StringBuilder sb = new StringBuilder();
long t = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
sb.append(i);
}
long t2 = System.currentTimeMillis();
String s = sb.toString();
System.out.println("time:" + (t2 - t) );
1百万次 耗时40ms
而
StringBuilder sb = new StringBuilder();
long t = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
sb.append(i);
sb.toString(); //多加了这句代码
}
long t2 = System.currentTimeMillis();
String s = sb.toString();
System.out.println("time:" + (t2 - t) );
1百万次 耗时无法忍受,关掉了。
10万次 耗时:4758
因此把这句代码改为 return null; 无论从内存消耗,还是大量压力访问,JFinal的json性能肯定杠杠的!