前回は、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倍速い。