Javaと情熱のあいだ

カステラとドーナツと珈琲

StringBufferとStringBuilder

JavaDocには単スレッドでは
StringBuilderを積極的に使えと書いてあるが処理速度の違いがはっきりしない。
スレッドセーフが実装されていないので単スレッドではパフォーマンスが高いらしい。
マルチスレッドから文字列操作を行うのであればStringBufferクラスを使う。
単一スレッドであれば StringBuilderクラスを使う。

        StringBuffer buffer = new StringBuffer();

        StringBuilder builder = new StringBuilder();

        StopWatch stopWatch = new StopWatch();

        stopWatch.start();

        for (int i = 0; i <= 1000000; i++) {
            buffer.append("Example");
        }

        stopWatch.stop();
        System.out.println(
                "StringBuffer Append Test 10kth : " + stopWatch.getTime() + "ms");

        stopWatch.reset();

        stopWatch.start();

        for (int i = 0; i <= 10000; i++) {
            builder.append("Example");
        }

        stopWatch.stop();
        System.out.println(
                "StringBuilder Append Test 10kth : " + stopWatch.getTime() + "ms");