Igo : MeCabと形態素解析速度比較
Igo(0.4.0)とMeCab(0.97)の形態素解析速度を再度比較してみた。
計時用のプログラム
/** * ファイル名: mec.cc * コンパイル: g++ -O3 -omec mec.cc `mecab-config --libs` * 計時方法: time mec <対象ファイル> * * gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu4) */ #include <mecab.h> #include "read_line.h" #include <cstdio> int main(int argc, char** argv) { mecab_t* m = mecab_new2("-Owakati"); ReadLine rl(argv[1]); const char* line; while(line=rl.read()) { // 行読み込み自体のコストを計る時は、以下の一行をコメントアウトする mecab_sparse_tostr(m,line); } mecab_destroy(m); return 10; }
Igo用の計時プログラム。
もともとあるソースを少し修正して流用。
/** * 計時方法: time java -server -cp igo-0.4.0.jar net.reduls.igo.bin.Igo <バイナリ辞書ディレクトリ> < <対象ファイル> * * java: jdk-6u18-linux-i586.bin */ package net.reduls.igo.bin; import java.io.IOException; import net.reduls.igo.Tagger; import net.reduls.igo.Morpheme; import net.reduls.igo.util.ReadLine; public final class Igo { public static void main(String[] args) throws IOException { final String dicDir = args[0]; // バイナリ辞書配置ディレクトリ final Tagger tagger = new Tagger(dicDir); final ReadLine rl = new ReadLine(System.in); for(String s=rl.read(); s != null; s=rl.read()) { // 行読み込み自体のコストを計る時は、以下の一行をコメントアウトする tagger.wakati(s); } } }