いくつかのtoStringの性能比較


背景


最近は一括インタフェースを書くのですが、一度に要求する量が多いので、性能をよく考えなければならない点が多いです.一つの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は悪くなく、操作はべき乗などです.