文字連結実行速度比較実験 |
|
|
文字列連結の速度比較実験です。
|
||
|
Home > 試してみよう Java実験コーナー > 文字列連結実行速度比較
文字列連結実行速度比較
このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
文字列の連結には、いくつかの方法があります。単純に+演算子で連結させる方法やStringクラスの concatメソッドを使う方法、StringBufferやStringBuilderを使う方法など。それぞれ一長一短あるのですが、 速度的にはどのくらいの違いがあるでしょうか。StringBufferよりStringBuilderの方が早いよって話は、よく聞くのですが実際には、どのくらいの違いがるのか。 それぞれの方法で速度比較を行ってみました。 ■文字列の連結−速度比較[ 実験に使ったプログラムのソースコード - ConcatTest.java - ]
[ サンプルプログラムの実行結果 ]
[ 結果解説 ]サンプルのプログラムの実行結果は、実行する環境や実行時の状況などによって変わってくると思いますが、 各実行時間の傾向的には、似たような結果になると思います。サンプルでは、まずListを使って一万個の文字列を作っています。それら全ての文字列を前述のそれぞれの文字列連結の方法を使って連結させています。 連結の方法は、+演算子による連結、String.concatによる連結、 StringBufferによる連結、StringBuilderによる連結です。 それぞれの方法の最初と最後でシステム時刻を取得して終了時刻と開始時刻の差分で実行にかかった時間を計測しています。 +演算子による文字連結は、手軽ですが実行にかなり時間がかかります。String.concatによる連結は、+演算子による連結より 半分以下の速度ですんでいますが、StringBufferやStringBuilderと比べると遅いです。 StringBufferとStringBilderは、さすがに早いですね。StringBuilderにいたっては、1万個の文字列を連結させても 1ミリ秒以下で終わっています。 StringBuilderは、1ミリ秒以下で終わっちゃってるので今度は、10万個の文字連結でやってみます。 +演算子の連結とString.concatの連結は時間がかかりすぎるので今回は、除外。StringBufferとStringBuilderで比較します。まず、上記実験用サンプルの29行目から47行目をコメントアウトします。 それから10万個連結なので10行目のcountの値を100000に変更。 。。。で、実行!! 以下、実行結果です。 [ サンプルプログラムの実行結果2 ]
|
|
最終更新日:2019/02/13
2015-03-01からの訪問者数
2801 人 |