image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ActiveRecord-JDBC で sqlite3 のアクセス | トップページ | jruby と ruby での DB アクセスの速度 (その2) »

2008-11-08

jruby と ruby での DB アクセスの速度

- http://www.tuyudaku.net/sqlite/import.html
> SQLite - CSVファイルのインポート
を参考にして、 sqlite3 に郵便番号を import した。
# activerecord で扱うための、テーブル名を zip でなく、zips になるように変更して。

ruby と jruby の両方で、簡単な検索プログラムを書いて、速度を比較してみた。

$ cat search.rb
#See http://d.hatena.ne.jp/urekat/20080923/1222169086

require 'pp'
require 'rubygems'
require 'active_record'
require 'nkf'

# ログを stderrに出す
# ActiveRecord::Base.logger = Logger.new($stderr)
# ログをファイルに出す
#ActiveRecord::Base.logger = Logger.new("debug.log")

ActiveRecord::Base.establish_connection(
  :adapter  => "sqlite3",
  :database => "zips.db",
  :timeout  => 5000
)

class Zip < ActiveRecord::Base
  def to_s
    return  "#{col1}|#{col2}|#{col3}|#{col4.toutf8}|#{col5.toutf8}|#{col6.toutf8}|#{col7.toutf8}|#{col8.toutf8}|#{col9.toutf8}|#{col10}|#{col11}|#{col12}|#{col13}|#{col14}|#{col15}"
  end
end

puts Zip.find(:all, :conditions => ["col3 like ?", '100000%'])

$ cat jsearch.rb
# See http://d.hatena.ne.jp/urekat/20080923/1222169086

require 'pp'
require 'rubygems'
require 'active_record'
# require 'kconv'
# SJIS 出力したいなら、str.kconv(Kconv::SJIS, Kconv::UTF8) などとすること。

# ログを stderrに出す
# ActiveRecord::Base.logger = Logger.new($stderr)
# ログをファイルに出す
#ActiveRecord::Base.logger = Logger.new("debug.log")

ActiveRecord::Base.establish_connection(
  :adapter  => "jdbcsqlite3",
  :database => "zips.db",
  :timeout  => 5000
)

class Zip < ActiveRecord::Base
  def to_s
    return  "#{col1}|#{col2}|#{col3}|#{col4}|#{col5}|#{col6}|#{col7}|#{col8}|#{col9}|#{col10}|#{col11}|#{col12}|#{col13}|#{col14}|#{col15}" # .kconv(Kconv::SJIS, Kconv::UTF8)
  end
end

puts Zip.find(:all, :conditions => ["col3 like ?", '100000%'])

$ time ruby search.rb
13101|100  |1000000|トウキョウト|チヨダク|イカニケイサイガナイバアイ|東京都|千代田区|以下に掲載がない場合|0|0|0|0|0|0
13101|100  |1000004|トウキョウト|チヨダク|オオテマチ|東京都|千代田区|大手町|0|0|1|0|0|0
13101|100  |1000002|トウキョウト|チヨダク|コウキョガイエン|東京都|千代田区|皇居外苑|0|0|0|0|0|0
13101|100  |1000001|トウキョウト|チヨダク|チヨダ|東京都|千代田区|千代田|0|0|0|0|0|0
13101|100  |1000003|トウキョウト|チヨダク|ヒトツバシ(1チョウメ)|東京都|千代田区|一ツ橋(1丁目)|1|0|1|0|0|0
13101|100  |1000005|トウキョウト|チヨダク|マルノウチ(ツギノビルヲノゾク)|東京都|千代田区|丸の内(次のビルを除く)|0|0|1|0|0|0
13101|100  |1000006|トウキョウト|チヨダク|ユウラクチョウ|東京都|千代田区|有楽町|0|0|1|0|0|0

real    0m0.774s
user    0m0.559s
sys    0m0.210s

$ time jruby jserach.rb
13101|100  |1000000|トウキョウト|チヨダク|イカニケイサイガナイバアイ|東京都|千代田区|以下に掲載がない場合|0|0|0|0|0|0
13101|100  |1000004|トウキョウト|チヨダク|オオテマチ|東京都|千代田区|大手町|0|0|1|0|0|0
13101|100  |1000002|トウキョウト|チヨダク|コウキョガイエン|東京都|千代田区|皇居外苑|0|0|0|0|0|0
13101|100  |1000001|トウキョウト|チヨダク|チヨダ|東京都|千代田区|千代田|0|0|0|0|0|0
13101|100  |1000003|トウキョウト|チヨダク|ヒトツバシ(1チョウメ)|東京都|千代田区|一ツ橋(1丁目)|1|0|1|0|0|0
13101|100  |1000005|トウキョウト|チヨダク|マルノウチ(ツギノビルヲノゾク)|東京都|千代田区|丸の内(次のビルを除く)|0|0|1|0|0|0
13101|100  |1000006|トウキョウト|チヨダク|ユウラクチョウ|東京都|千代田区|有楽町|0|0|1|0|0|0

real    0m8.645s
user    0m7.928s
sys    0m0.472s

遅いぞ jruby!
ATOKダイレクトプラグインで、ruby + activerecord + sqlite3 は十分 使えそうだな。

« ActiveRecord-JDBC で sqlite3 のアクセス | トップページ | jruby と ruby での DB アクセスの速度 (その2) »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/43051426

この記事へのトラックバック一覧です: jruby と ruby での DB アクセスの速度:

« ActiveRecord-JDBC で sqlite3 のアクセス | トップページ | jruby と ruby での DB アクセスの速度 (その2) »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク