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)の結果を
連結するので、遅くなるのだと思います。
今日はここまで。
でわでわ( ̄▽ ̄)/