nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Java:空文字列判定の実行速度の比較

前回は、Javaの文字列で、先頭が一致しているのかを調べるのにかかる時間は、startsWithとsubstring.equalsでは、どちらが速いのか実験しました。

今回は、変数に入っている文字列が、空文字列(長さ0)なのかの判定で、String.equals("")と、String.length() == 0 のどちらが速いのかを実験しました。
・実行環境
OS : Windows XP Pro SP3
CPU : Intel Core 2 Duo E8400(GIGABYTEのDES Advanced有効)
Java : JDK6u20

実験ソース:StringTest3.java

それぞれ、20回実行したときの平均です(forで20回、回しています)。

・結果 平均(合計)(単位は、ms)

比較回数.equals("").length() == 0
1,000回 0.0(0) 0.0(0)
100,000回 0.0(0) 0.0(0)
1,000,000回 94.5(1890) 36.7(734)
10,000,000回 938.25(18765) 368.8(7360)
100,000,000回 9366.4(187328) 3676.55(73531)


・結論
length()の方が約2.5倍速い。