トップ «前の日記 最新 次の日記»

2024-09-22 (Su) [長年日記]

_ メール検索ツール

メールから抽出したテキストを保存しておく構造を変更。 つまり、20万通を一つのディレクトリに格納するんじゃなくて、 サブディレクトリに分けて格納する。

bigram 作るのに結構時間かかってるな…

    (0...str.length-1).each do |i|
      cc = str[i, 2]
      next if cc =~ /\s/    # 空白文字を含んでたら無視
      kws[cc] = true
    end
    kws.keys
    str.each_char.each_cons(2).uniq

どっちが速いだろう? 多少結果は違うけど。 やっぱり Ruby 言語でループ回すと遅いかな…

Benchmark.benchmark do |x|
  x.report('ruby') {
    kws = {}
    (0...str.length-1).each do |i|
      cc = str[i, 2]
      next if cc =~ /\s/
      kws[cc] = true
    end
  }
  x.report('c') {
    str.each_char.each_cons(2).uniq
  }
end

↓結果はこちら!

ruby  0.298988   0.000043   0.299031 (  0.299868)
c  0.518564   0.000085   0.518649 (  0.520154)

え。ruby の方が速い… (@_@ 何度か実行してみたけど、だいたい同じ。

uniq をやめると速い。uniq が遅いんだな。

といって、uniq 部分を ruby の Hash で作り直しても、

  x.report('hash') {
    kws = {}
    str.each_char.each_cons(2).each do |cons|
      kws[cons] = true
    end
    kws.keys
  }

もっと遅くなっただけだった。

最後の手段。--yjit を付けてみたw

_ 原神 - 魔神任務第1章第2幕

だる… あちこち行ってお使いをしただけなんよな…

次、冒険ランク 28 が必要らしい。 てことは、突破任務やらんといかん、ってことやな。 第3幕が終わったら、クイックスタートでカチーナがゲットできるみたい。


編集 パスワード変更