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版)
←この記事が役に立ったという方はクリックお願いします。
| 固定リンク
「Java」カテゴリの記事
- Java:Reader/Writerにおけるclose()メソッド呼び出しの流儀(2015.06.29)
- Java:例外が起こったときに実行されるコードとされないコード(2015.03.31)
- Java:前回作成したコードの処理速度を比較する(2015.03.15)
- Java:数値を3桁ごとのカンマ区切りの文字列にする(2015.03.02)
- Java:全角の数値文字列を数値として受け付ける(2015.01.19)