忍者ブログ

きままなひとりごと

引っ越しました。新しいブログはnmtysh.logです。
2015/12/27

ブログを引っ越しました

ブログの引っ越しを行いました。
別サービスへの移行になるため過去記事をすべて再確認しつつ、記事の削除やリンクの差し替えなどを行っています。
現在では役に立たなくなっているtipsなどは削除していますのでご了承ください。

新しいブログはこちらです。
nmtysh.log

今後は新しいブログのほうで更新していきますのでそちらをご覧ください。
2017/03/27 (Mon) 13:45

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2010/02/20 (Sat) 22:30

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

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

・実行環境
OS : Windows XP Pro SP3
CPU : Intel Core 2 Duo E8400(GIGABYTEのDES Advanced有効)
Java : JDK6u15

文字列の比較結果がtrueになる場合
実験ソース:StringTest.java

比較する文字列は、比較される文字列の先頭から切り出した10文字です。
B = A.substring(0,10);

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

・結果 平均(合計)(単位は、ms)
比較回数 startsWith substring.equals charAt
10回 0.0(0) 0.0(0) 0.0(0)
1,000回 0.0(0) 0.0(0) 0.0(0)
100,000回 3.9(78) 5.45(109) 7.05(141)
1,000,000回 27.35(547) 39.85(797) 48.45(969)
10,000,000回 252.35(5047) 383.6(7672) 473.45(9469)
100,000,000回 2507.05(50141) 3816.4(76328) 4708.6(94172)
・結論
startsWithの方がsubstring.equalsよりも1.5倍速い。

文字列の比較結果がtrueにならない場合
実験ソース:StringTest2.java

比較する文字列は、比較される文字列の先頭から10文字分後から切り出した10文字です。
B = A.substring(10,20);

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

・結果 平均(合計)(単位は、ms)
比較回数 startsWith substring.equals charAt
10回 0.0(0) 0.0(0) 0.0(0)
1,000回 0.0(0) 0.0(0) 0.0(0)
100,000回 1.55(31) 3.15(63) 0.8(16)
1,000,000回 9.35(187) 21.9(438) 6.25(125)
10,000,000回 74.2(1484) 189.1(3782) 48.45(969)
100,000,000回 727.35(14547) 1872.65(37453) 469.5(9390)
・結論
startsWithの方がsubstring.equalsよりも2.5倍速い。

・総論
startsWithの方が速い!

拍手[2回]

この記事へのトラックバック
この記事にトラックバックする:
PR