前回も書いたけどIO処理ってめっちゃ遅い
そこで
文字列を
out.println("");
で1行ずつ分けて出力するのと(可読性のために)
まとめて出力するのではどっちが早いのかと調べてみたところ
long time1 = System.currentTimeMillis();
for (int i = 0; i <= 9999; i++) {
out.println("文字列");
}
long time2 = System.currentTimeMillis();
StringBuilder sb=new StringBuilder();
for (int i = 0; i <= 9999; i++) {
sb.append("文字列");
}
out.println(sb.toString());
long time3 = System.currentTimeMillis();
long r1=time2-time1;
long r2=time3-time2;
out.println(String.valueOf(r1));
out.println(String.valueOf(r2));
GAE環境で7ms 1ms
ローカル環境で 213ms 20ms
つまり1行ずつ出力するとすごく時間がかかるので
行数がとんでもなく多い場合はまとめて出力したほうがいいかもしれません。
可読性はStringBuilder.append("");で1行ずつ書いていけばさほど変わら無いと思う
2012年01月12日
2012年01月10日
正規表現でのエスケープでつまった
正規表現でurlとかを探したい時
http://[a-z]*ドットcom/
とかってやるとする
ドットは正規表現では意味を持ってしまうからエスケープしなければならん
つまり¥.
としなければならない
が
Eclipsに「そんなエスケープはねーよ!!」と言われた
なるほど
¥もエスケープしなければならず
つまり¥¥.としなければならないんだ
これでしばらく悩んでた
http://[a-z]*ドットcom/
とかってやるとする
ドットは正規表現では意味を持ってしまうからエスケープしなければならん
つまり¥.
としなければならない
が
Eclipsに「そんなエスケープはねーよ!!」と言われた
なるほど
¥もエスケープしなければならず
つまり¥¥.としなければならないんだ
これでしばらく悩んでた
-
- 0 Comment |
- 0 Trackback |
-
Stringクラスで文字列結合はオワコン
IOってめちゃんこ重い。
str = a;
str +=b;
str +=c;
•
•
•
とかやってると重すぎて血を吐いて死んでしまうので
StringBuilderクラスをつかいましょ
sb.append(a);
sb.append(b);
•
•
str =sb.toString();
とすると百倍は早くなる
ちなみに
StringBuilderとStringBufferでは
びるだーの方が幾分早いという記事をちらっと見たことがある
str = a;
str +=b;
str +=c;
•
•
•
とかやってると重すぎて血を吐いて死んでしまうので
StringBuilderクラスをつかいましょ
sb.append(a);
sb.append(b);
•
•
str =sb.toString();
とすると百倍は早くなる
ちなみに
StringBuilderとStringBufferでは
びるだーの方が幾分早いという記事をちらっと見たことがある
-
- 0 Comment |
- 0 Trackback |
-