MySQLに登録したなろうのテキストを読み込んでmecabに突っ込んでいくrubyのプログラムを作っていた。
しかしどうにも遅いので、業を煮やしてJavaに移植。
そしたら同じ分量をmecabで分解してハッシュに蓄えても速度が5倍になった。
Java速いなー
しかし、その分コードとか妙に増えた。
rubyならハッシュへの足し算なんて
hash[“hoge”]=hash[”hoge”].to_i + 1
ですむけど、Javaだと
Integer i = hash.get(x);
if(i==null){
i = new Integer(1);
hash.put(x,i);
}else{
hash.put(x, new Integer(i.intValue()+1));
}
とかになっちゃうから、簡単に行数が増える。
めんどいけど、Javaは厳密性が求められるので仕方がない・・・
しかしそれでも全テキストを処理しようとすると何時間かかるんだかわからないレベル。
やっぱり多すぎるよ、このテキスト量。
さらにマルチスレッド化して高速化しないと実用的にならんかも。
捨てたものはいらない部品。
体重は64.5kg
最近のコメント