« Java:数値を3桁ごとのカンマ区切りの文字列にする | トップページ | シェルスクリプト:「.svn」ディレクトリを一括削除する »

Java:前回作成したコードの処理速度を比較する

【課題】
前回の記事にて,自作メソッドのほかにStringクラスのformatメソッドを使って同等機能を実現する例を挙げましたが,String.formatは処理速度が遅いメソッドであるという話を聞いたので,String.formatによる実装と,前回作成したdecimalToStringメソッドとを速度比較してみました。
※両メソッドを10,000回繰り返し処理した所要時間で比較します。

比較した環境:
OS: Mac OS X 10.10.2
CPU: 2.3GHz Intel Core i5
Java: 1.6.0_65

●String.formatメソッドの処理速度

速度計測用コード:

Deque<String> que = new LinkedList<String>();
long start = System.currentTimeMillis();
for (long value = 0; value < 10000; value++) {
  que.add(String.format("%1$,3d",value));
}
System.out.println(String.valueOf(System.currentTimeMillis()-start)+" msec");
※上記コードでは,整形のため空白部分は全角スペースを使用しています。

測定結果:
1回目:471 msec
2回目:491 msec
3回目:487 msec
4回目:497 msec
5回目:481 msec

●前回作成したdecimalToStringメソッドの処理速度
※ decimalToStringメソッドの中身は前回記事参照。

速度計測用コード:

Deque<String> que = new LinkedList<String>();
long start = System.currentTimeMillis();
for (long value = 0; value < 10000; value++) {
  BigDecimal dec = new BigDecimal(value);
  que.add(decimalToString(dec));
}
System.out.println(String.valueOf(System.currentTimeMillis()-start)+" msec");
※上記コードでは,整形のため空白部分は全角スペースを使用しています。

測定結果:
1回目:168 msec
2回目:190 msec
3回目:189 msec
4回目:189 msec
5回目:197 msec

結果として,String.formatはdecimalToStringの倍以上の処理時間がかかる結果になりました。

【結論】
文字列を大量に処理する場所では,String.formatの使用はできれば避けたほうが良さそうです。

【著作権表記】上記コードを含む本ブログのプログラムコードは,私的利用可,商用利用可,改変しての利用可です。利用の際に作者に許諾を得る必要はありません。

■関連書籍をAmazonで検索:[Java]
増補改訂版 Java言語で学ぶデザインパターン入門(kindle版)



にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


ノートンシリーズ新登場バナーソニーストアブックオフオンライン【PC・携帯共通】

|

« Java:数値を3桁ごとのカンマ区切りの文字列にする | トップページ | シェルスクリプト:「.svn」ディレクトリを一括削除する »

Java」カテゴリの記事

トラックバック


この記事へのトラックバック一覧です: Java:前回作成したコードの処理速度を比較する:

« Java:数値を3桁ごとのカンマ区切りの文字列にする | トップページ | シェルスクリプト:「.svn」ディレクトリを一括削除する »