Hatena::ブログ(Diary)

Relevant, Timely, and Accurate

 | 

2007-10-17

Joel 式

[]JRuby は確かに速い。(というか、私の場合は -O -J-server を知らなかった...。)

JRubyが遅いという話は過去のものになるかもしれません。

404 Not Found

を拝見して、改めて私の用途についてベンチマークを取り直してみました。

ベンチマークの内容は、

99819 レコードある Shapefile ファイルを読み、読んだレコードをすべて別の Shapefile に書き出す。

というもので

require 'geotools'

src = '(...)/transl_1_1.shp'
start_time = Time.now
Geo::Writer.open('trans.shp') do |w|
  Geo::Reader.foreach(src) do |g, a|
    w.write(g, a)
  end
end
print "#{Time.now - start_time}s\n"

というものです。geotools.rb は http://svgmapdata.sakura.ne.jp/geotools/ のものです。これを、MacBookMac OS X 上で time コマンドを使って時間計測しました。

結果

Ruby の種類realusersys起動時間除外1レコードあたり処理時間
JRuby trunk203.00s189.98s11.13s195.49s1.96ms
JRuby trunk -O -J-server112.23s110.36s8.37s104.23s1.04ms
JRuby 1.0.1190.04s187.89s10.96s185.84s1.86ms
JRuby 1.0.1 -O -J-server128.04s111.61s8.64s119.97s1.20ms
Ruby 1.8.6221.38s197.51s7.30s218.67s2.19ms

私の場合、

CRuby で同等の処理をするよりも速い

-O -J-server をつけると2倍速くなる

という結果になりました。しかも -O -J-server をつけたときの処理時間は、私が目標としていた 1ms 程度になってくれています。

私の用途の場合

私の用途は、Java ライブラリRuby から使用するというものなのですが、

という三段論法により、これからは JRuby を本格的に利用することにしようと思います。

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


画像認証

トラックバック - http://d.hatena.ne.jp/hfu/20071017/1192683618
 |