プログラミングいちねんせい

プログラミング初心者が優雅にもがく軌跡です

演算子とStringBuilderで文字の連結の速度の違いを測定してみました

前回の続きです。ご存じない方は下記からご覧ください。

System.nanoTime()とSystem.nanoTime()

JAVAで速度計測するには代表する2つのメソッドがあるようです。それがSystem.currentTimeMillis()メソッドとSystem.nanoTime()メソッドです。それぞれの違いは数値の精度にあるようなので今回はSystem.nanoTime()を利用します。System.nanoTime()の2回目の取得時間から1回目の取得時間を引いて1000で割ったものがミリ秒になるので、それぞれを変数startendに代入して(end - start) / 1000としました。

最初は簡単な文字連結で試したのですが、あまりにも早すぎたのでforで2000回連結してみました。

今日は時間がないので結果を簡単に書きます。

プラス演算子で文字連結したOperator.javaを5回計測した平均値は14110226ミリ秒でした。 StringBuilderで文字連結したStringBuilder.javaを5回計測した平均値は14139477ミリ秒でした。

なぜかStringBuilderのほうが遅いという結果に終わりました。

疑問

  • for文での文字の連結の書き方が間違ってる?
  • System.nanoTime()の使い方が間違ってる?
  • 2000回程度では両者に差は出ない?

あとがき

モヤモヤが残ったのでまた試したいです。