演算子とStringBuilderで文字の連結の速度の違いを測定してみました
前回の続きです。ご存じない方は下記からご覧ください。
System.nanoTime()とSystem.nanoTime()
JAVAで速度計測するには代表する2つのメソッドがあるようです。それがSystem.currentTimeMillis()
メソッドとSystem.nanoTime()
メソッドです。それぞれの違いは数値の精度にあるようなので今回はSystem.nanoTime()
を利用します。System.nanoTime()
の2回目の取得時間から1回目の取得時間を引いて1000
で割ったものがミリ秒になるので、それぞれを変数start
とend
に代入して(end - start) / 1000
としました。
最初は簡単な文字連結で試したのですが、あまりにも早すぎたのでfor
で2000回連結してみました。
今日は時間がないので結果を簡単に書きます。
プラス演算子で文字連結したOperator.java
を5回計測した平均値は14110226
ミリ秒でした。
StringBuilder
で文字連結したStringBuilder.java
を5回計測した平均値は14139477
ミリ秒でした。
なぜかStringBuilder
のほうが遅いという結果に終わりました。
疑問
for
文での文字の連結の書き方が間違ってる?System.nanoTime()
の使い方が間違ってる?- 2000回程度では両者に差は出ない?
あとがき
モヤモヤが残ったのでまた試したいです。