Yusuke TABATA
yusuk****@w5*****
2005年 10月 3日 (月) 22:55:48 JST
田畑です。 Yuichi Yoshida wrote: >> Berkeley DBなどを使うのはどうでしょう。大抵のスクリプト言語は自身が >>持つハッシュと同じインターフェースでBDBを扱えて、オンメモリでそのまま >>ハッシュに持たせるよりはメモリ効率がよいようです。 > DBをインストールして使いかたを覚える手間を今まで惜しんできていたのですが、 > そうも言ってられないかもしれないですね…。 これ自体は極めて簡単で、rubyなら配布物の中のdbmtest.rbという サンプルを見てもわかるのですが : require 'dbm' : d = DBM.open("test") : d['読み'] = '単語' こんな感じで普通のハッシュとして使うと、勝手にデータベースの ファイルに保存してくれます。 これに手元の25MぐらいあるCSVっぽいファイルを入れてみると、 $ time ruby a.rb real 10m47.432s user 0m15.673s sys 0m19.650s $ ls -l test.db -rw-rw-r-- 1 yusuke yusuke 13422184 Oct 3 22:43 test.db というふうに富豪的にやってたら日が暮れそうな感じでした。 (VMwareでディスクは遅いのですが、450MBほどのメモリは割り 当ててあり、それほどダメな環境では無いと思います。) #正攻法はあきらめて、GUIの内容を更新するごとに25MBのファイルに #grepをかけるなんて方法を検討してたりします。 >> 辞書の生成にかなりのメモリを必要とするようですね。Zaurus C3000でセル >>フビルドを試みてみたのですが、mkanthydicを実行するときに、構造体 >>uc_dictの構築途中でメモリが尽きてしまうようです。 >> >> 辞書のバイナリに関してお聞きしたいのですが、エンディアン依存性はある >>のでしょうか。ないのであれば、てきとうなi386マシンで作った方がよさそう >>です。 とりあえずの手として、dict.argsというファイル中の build_reverse_dictという行を消すと逆変換の辞書を作らなくなります。 -- -- CHAOS AND CHANCE! Yusuke TABATA