2007-12-11

Re: Re2: アプローチが腐ってるのかもしれないなあ

お、いらっしゃいましたか。

このコードのコンセプトは、「馬鹿でかいファイルから幾つかの特定行を参照するにあたり、なるべくディスクIOを減らしつつメモリ消費も押える」と解釈したけどあってるのかな?

キャッシュした行番号はソートしたリストにしておけばバイナリサーチで比較的早く最近傍を見つけることができるし、見つけた場所へ今回キャッシュした行を挿入すればソートが維持できる。

キャッシュの大きさにもよるけれど、シークしながら探すより、オンメモリで探す方が早い気がする。そういうモジュールがすでにあるかも知れないし。

キャッシュがでかくなるなら、いっそ全部読んじゃった方が良いかも知れないし、でかいならDB使っちゃった方が効率的かも知れない。

その辺はアクセスパターンや規模や行長のバラツキやあれやによるからなんともいえないけれど。

ところで、実はruby知らないんで聞くんだけど。

readlineの返すオブジェクトの「to_i」って行頭に書かれている行番号を表すってことで良いのかな?

記事への反応 -
  • なんかデーターが見つからない危険性を感じるというか。ファイルがでかいからreadlinesとか使いたくないんだけれども無理かな。 class Id_sorted_data def initialize path, avarage_bytes_by_one_data, search_...

    • どうせなら、ファイル上の位置もキャッシュしておいて、シーク位置の参考にしたら? あと、実際に動いた距離と方向の変化から、発散気味なのか、収束が遅いのか判断して、パラメー...

      • うお、マジレスほんとサンクス。 そうだよなあ、どうキャッシュして、どう反映させてくかだよな。まあキャッシュはまだ比較的楽だとしても、反映が難しいな…。シーク位置キャッシ...

        • お、いらっしゃいましたか。 このコードのコンセプトは、「馬鹿でかいファイルから幾つかの特定行を参照するにあたり、なるべくディスクIOを減らしつつメモリ消費も押える」と解釈し...

          • 相談乗ってもらってる立場なのに気づかず時間開いてすまん。 まあファイル内容いったんメモリ上の配列にしてもいいのかもしれないけど、どうせならIOごと減らすアプローチからと欲...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん