2007-06-01から1日間の記事一覧

flockの検証

以下のスクリプトでflockの動作を検証してみた。 当たり前の話かもだけど、よく混乱するのでメモ。 つぎ SHEXSH | NBEX | NB はじめSH開く待ち開くfalseが返る EX待ち待ちfalseが返るfalseが返る SH | NB開く待ち開くfalseが返る EX | NB待ち待ちfalseが返る…

gdbm: ラッパーその2

さすがに読み取り時も排他ロックをかけるのはまずそうなので、読み取り時は共有ロックをかけるようにしてみる。 require 'gdbm' class GDBMStore @@READABLES = [ :[], :each, :each_key, :each_pair, :each_value, :empty?, :fetch, :has_key?, :has_value?…

gdbm: ラッパーをPStoreと比べてみる

さすがにPStoreより遅かったら、作った意味もなさそうなので。 PStore require 'pstore' db = PStore.new("pstore.db") 1000.times do |i| db.transaction do db[i.to_s] = (i * i).to_s end end 1000.times do |i| db.transaction(true) do db.fetch(i.to_s…

gdbm: ロックをなくしてみる

ロックをしないようにしてみる。 def fetch(key) GDBM.open(@dbfile) {|dbm| dbm[key]} end def []=(key, value) GDBM.open(@dbfile) {|dbm| dbm[key] = value } end ~$ time ruby validate_gdbmstore.rbreal 1m15.812s user 0m0.015s sys 0m0.046sでも、遅…

gdbm: もうラッパーじゃない

gdbm直たたき。 def initialize(dbname) @dbm = GDBM.open(File.expand_path(dbname)) end def fetch(key) @dbm[key] end def []=(key, value) @dbm[key] = value end ~$ time ruby validate_gdbmstore.rbreal 0m0.297s user 0m0.015s sys 0m0.015sさすがに…

け〜つろ〜ん♪

memcached使え、と。 追記 ハッシュをマーシャライズして、DB代わりに使えないかな…