幾種toString的效能比較
阿新 • • 發佈:2019-02-02
背景
最近要寫一個批量的介面,由於一次請求的量比較大,所以很多小的點不得不好好考慮效能。一個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還是不錯的,並且操作是冪等的。