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幕が終わったら、クイックスタートでカチーナがゲットできるみたい。
[ツッコミを入れる]