ブログトップ 記事一覧 ログイン 無料ブログ開設

水まんじゅう

 | 

2011-12-05

Java1.4.2〜Java7.0で文字列操作の速度を測ってみた(やっつけ)

昨日ちょこっと計ってみたら大きく差が出たのでネタとして。

最初Java1.4.2とJava7.0だけを比べていたらメジャーバージョン2つ飛ばして計測はアレみたいな反応があったので、間のも測ってみました。

文字列操作は業務システムだと沢山の箇所で使われていると思っています。
入力値チェックに始まりCSV出力まで小さいものから大きい物まで。

java.net.URLEncoderというクラスがありますが、
こちらのクラスは、文字列を解析して、他の文字列に組み替えてくれるクラスです。
今回はこのクラスを実行させて、Java1.4.2とJava5.0とJava6.0とJava7.0での速度の差を測ってみました。

なお、実行環境はCore2Duo P8600(2.4GHz)上のWindows Vista(32bit)です。

Java1.4.2_19

 1ループ目2ループ目
11961719762
21957219561
31956119605
Java1.5.0_22

 1ループ目2ループ目
12033720147
22041520040
32040920159
Java1.6.0_29

 1ループ目2ループ目
1112469301
2111589299
3112059324
Java1.7.0
 1ループ目2ループ目
1100287898
299967894
3100077994

(単位はms)

※名称は使用したランタイムに併せてあります。

使用したソースはこちら。

※2回測定しているのは最適化の恩恵を受けた後の結果のみを見るためです。
(一回目は最適化前後の結果が混ざっているはず)

今回、java1.4.2_19からJava7.0まで測定してみたら、2倍以上の速度の差が出ました。
バージョンを上げるだけで倍以上の性能になるのだなぁと感激。
特に、Java5.0とJava6.0の間にものすごい最適化が図られているというのは驚嘆するばかりです。

以前、CSV出力処理を作ったことがあるのですが、今回の処理はCSV出力で使用する処理を小型化したようなものとの印象です。
Java5.0以下を使用していてCSV出力で性能劣化が激しい等困られている場合はそれだけでJavaのバージョンを上げたほうが良いかもしれません。

#もうEOD迎えてるし!

なお、ソースコードの一部に @seratch さんのコードを使わせていただいてますw

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/megascus/20111205/1323084617
 |