カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

TinySegmenter.jl を Javascript へ逆移植してみた

昨日、途中で時間切れとなった、

the.nyarla.net

の再チャレンジです。


話の中身

Javascript で書かれた小さな日本語分かち書きソフトウェア

として、

と言うのが有って、さらに、それを高速化しつつ他の言語に移植された一例として、

github.com

と言う実装が有るのですが、今回、これの最適化手法を参考にしつつ、 最新の Javascript へ逆移植したモノを作ってみました。

成果物

どれぐらい速くなったか

TinySegmenter.jl のリポジトリに有るベンチマークを適当に走らせてみた結果、 手元の、

  • Device: Mac mini late 2012
  • CPU: Intel Core i7-3720QM
  • Memory: 16GB
  • OS: Windows 10 Pro 64bit
  • Node.js: v7.5.0

という環境では、大体、ベンチマーク内にあるテキストの一回分の分かち書きの処理速度が、

オリジナル: 0.84sec ぐらい
逆移植版:   0.35sec ぐらい

となったので、大体 2.4 倍ぐらい速くなったっぽいです。

感想

うん、まあ今回は Julia 版をほぼ丸写しに近い形で移植したんですが、 僕がよく訳の分からんポカミスをやらかしていた影響で、昨日とかでもそうだったんですが、

あれ、なんか動いてない! なんでや……あ! 処理が抜けてる!

ってなって時間を消費していたので、まーその辺り、自分のポカミス具合いを改善出来たらなーとか思いました。

あと、今回書き写していた過程で、

Node.js v7.5.0 だと const とか let 使うと遅くなって var 使うと速い! なんでや!!1

という謎の知見を得られたりしたんですが、まあその辺りも面白かったですね。はい。


という事で話として以上です。

良かったら今回の TinySegmenter 、使ってみてください。 3-caluse BSD なので無保証だけど!