いくつかのtoStringの性能比較
3056 ワード
背景
最近は一括インタフェースを書くのですが、一度に要求する量が多いので、性能をよく考えなければならない点が多いです.一つのobjectのtoString操作は、性能の考慮点でもあるので、自分でテストをして、可能ないくつかのtoStringの方法を比較しました.
public static void main(String[] args){
SingleConsignOrder singleConsignOrder = new SingleConsignOrder();
Long startTime = System.currentTimeMillis();
for(int i = 0; i < 1000; ++i){
SerializationUtils.serialization(singleConsignOrder);
}
Long endTime = System.currentTimeMillis();
System.out.println("SerializationUtils.serialization:"+(endTime-startTime));
for(int i = 0; i < 1000; ++i){
JSON.toJSONString(singleConsignOrder);
}
startTime = System.currentTimeMillis();
System.out.println("JSON.toJSONString:"+(startTime-endTime));
for(int i = 0; i < 1000; ++i){
singleConsignOrder.toString();
}
endTime = System.currentTimeMillis();
System.out.println("singleConsignOrder.toString:"+(endTime-startTime));
for(int i = 0; i < 1000; ++i){
ToStringBuilder.reflectionToString(singleConsignOrder);
}
startTime = System.currentTimeMillis();
System.out.println("ToStringBuilder.reflectionToString:"+(startTime-endTime));
for(int i = 0; i < 1000; ++i){
JSON.toJSONBytes(singleConsignOrder);
}
endTime = System.currentTimeMillis();
System.out.println("JSON.toJSONBytes:"+(endTime-startTime));
}
結果
SerializationUtils.serialization:572 JSON.toJSONString:23 singleConsignOrder.toString:10 ToStringBuilder.reflectionToString:93 JSON.toJSONBytes:42
objectが持参するstringは最も速いが、この持参するtoString方法は書き直さないと、所望の効果が得られない可能性がある(印刷されるのはメモリアドレスだけかもしれない).だからJSONを選んだ.toJSOnStringは悪くなく、操作はべき乗などです.