01/09

(0:25) ふぅ、疲れた。

スペイン語のオーディオブックを10分だけテキスト読みながら聞いて、わからない単語をメモったりしてるんだけど、それにだいぶ時間が取られてしまう。

30分からは別の教材の暗記だけど、しんどいなぁ。

オーディオブックのペースを落とそうかな。

 

いきなりだけど、JavaにはろくにTrieのライブラリがない。

marisa-trieとかdarts-cloneの移植版でもあればいいのに。

ちょっとdarts-cloneのソースを見てみた。

 

すると、中にDawgUnitという4バイト整数をラップしたクラスがある。

そうなんだよなぁ、こういうのがJavaではできないんだよなぁ。

C++ではこのクラスが4バイトしか使わないことが100%保証できるけど、Javaではそうはいかない。

それに、メンバ関数もクラス定義に書かれているからインライン化されるであろうところだけど、Javaではたぶん毎回メソッド呼び出しが起こるんじゃないだろうか。

実質4バイトのクラスにいろんな情報がくっついてきて、メソッド読み出しのオーバーヘッドまでかかるなんて悪夢だ。

やるとしたら、手動でインライン展開的なことをするしかないだろう。

 

Javaのこういうところは欠点だよなぁ…と思いつつ、考えてみるとこういうのはすごく限られた場合なので、手動でインライン展開(というかクラスでラップしないやり方)でやるのでも、たいして問題がないのかもしれないな。

でも、こういうライブラリのJava版が出ない理由のひとつにはなっている気がする。

 

darts-cloneのほうはpredictive searchができないんだよなぁ。

しかし、仮に移植するとなるとmarisa-trieのほうは悪夢だ(規模的に)。

darts-cloneは上のところだけ気をつけたらなんとかなりそうだけど。

まあ、どっちにしても今のところはそれだけの余裕がないかな…。

 

(0:57) 結局、今日のスペイン語の暗記はサボってしまった。

やっぱりスペイン語のオーディオブックの負担が大きいな。

オーディオとしては10分だけなんだけど、聞き取れないところをテキストで確認しながらだからなぁ。

 

そういえば、marisa-trieにはmarisa-javaというバインディングがあるんだった。

使ってみたことはないけど、どうなんだろうな。