性能測定


文字列の中から半角数字だけ抜き出す必要が出てきました。
暇な私は性能測定してみたりしました。
やっぱり、先頭からごりごり比較するのが一番早いのかな?
以下、早かった順にコードを書いときます。
結果の数字はマシンスペックに依存すると思うのであくまで参考値
ってことで。m(_ _)m
でも正規表現で数値以外を""に変換って方がかなり遅いんですね。
1行で書けるから思わず正規表現でやりたくなっちゃうけど、あん
まり遅いんじゃーやだな。
ごりごり書いたって複雑なコードじゃないわけだし。



// 百万回ループにだいたい300msec程度でした
public static String substNum(String str) {

final char[] nums = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

StringBuffer ret = new StringBuffer();
for (int i = 0; i < str.length(); i++) {

char c = str.charAt(i);
boolean isContinue = true;
for (int j = 0; j < nums.length; j++) {

if (c == nums[j]) {

isContinue = false;
break;
}
}

if (isContinue) {

continue;
}

ret.append(c);
}

return ret.toString();
}

// 百万回ループにだいたい4000msec程度でした
public static String substNum(String str) {

return str.replaceAll("[^0-9]", "");
}

0 コメント: