Hatena::ブログ(Diary)

ny23の日記 このページをアンテナに追加 RSSフィード

2010-06-11 流行りにのってみる

おまけ

|  おまけを含むブックマーク  おまけのブックマークコメント

> time ruby -e 'hash = Hash.new(0); f = open("unigram_raw.txt"); while line = f.gets do hash[line.chomp] += 1; end; f.close; hash.each {|k,v| print k, " ", v, "\n"; }' > tmp.ruby
ruby -e  > tmp.ruby  1461.28s user 4.55s system 99% cpu 24:27.28 total
一行一単語だったのを忘れていたので直した.

書き方の問題もあるだろうけど,約50倍の速度差.速度差もともかく,20分以上かかると見込まれる処理をスクリプト言語で書くという発想は自分はないです.その時間に C++ で実装できるし.

そういう理由でスクリプト言語のプログラムでファイルに保存されたものはここ数年ほとんど皆無なのですが,ruby one-liner + zsh (-r コマンド履歴からの補完) は多用しています.三行ぐらいになってくると,人間の埋め込み文処理能力の限界を感じてしまうので,コマンドライン中で括弧の対応が見れるようになればなお良いのだけどなー.定番の Python も覚えたいけど,one-liner メインの現状だと使う場面が無さそうか.

nokunonokuno 2010/06/12 18:29 ありがとうございます! どうもsortコマンドが遅すぎると思ってたところです。
ソートがO(n log(n))といったってlog(n)で400倍も遅くなるわけないし、と…

ny23ny23 2010/06/12 19:25 単語頻度のカウントに使う場合,100倍とまで行かなくても,手元で試した限り,10倍程度は変わりそうな感じでした.
これで解決されると良いですね.

Connection: close