今日はちゃっちゃと本題にはいります。

Javaで、intの数値をStringにするとき、

int i = 100;
String string = "" + i;

なんてやってしまうことありませんか?
(ないですか…ないですよね(T_T)


これ、実は時間がかかります。
(といっても少しですけどね・・・・)

時間がかかることを簡単にテストしたプログラムを書きました。


public class IntegerToStringTest{
public static void main(String[] args) {
long toStringTime = 0;
long plusTime = 0;

for(int j = 0; j < 100; j++){
long starttime = System.currentTimeMillis();

for(int i = 0; i < 200000; i++){
String s = Integer.toString(i);
}

long endtime = System.currentTimeMillis();

toStringTime += endtime - starttime;

starttime = System.currentTimeMillis();

for(int i = 0; i < 200000; i++){
String s = "" + i;
}

endtime = System.currentTimeMillis();

plusTime += endtime - starttime;
}

System.out.println("[toString] Average = " + (toStringTime/100.0f));
System.out.println("[\"\" + ] Average = " + (plusTime/100.0f));
}
}

実行すると以下のような結果がでました。
[toString] Average = 58.26
["" + ] Average = 143.77


この結果から、intをStringに変換するには、素直に
Integer.toString(int)を使用するべきだとわかります。

では、なぜ遅かったのか?
推測ですが、
""(空文字)にInteger.toString(int)の結果を
連結するので、遅くなるのだと思います。


今日はここまで。
でわでわ( ̄▽ ̄)/