[migemo] migemo-replace-in-string の高速化

Satoru Takabayashi satoru @ namazu.org
2004年 6月 13日 (日) 05:19:57 JST


手元の OS を Red Hat 9 から Fedora Core 2 にバージョンを上げ
たり elisp を整理していたりしていたら、いつのまにか migemo 
の検索が滅茶苦茶遅くなってしまいました。t と打つと 5秒くらい
待たされます。

Emacs のバージョンが上がったり elisp の再インストールなどを
行っていたので、遅くなった原因はよくわからなくなってしまった
のですが、調べてみたところ、migemo-replace-in-string がもの
すごい時間を食っていることがわかりました。

そこで、migemo-replace-in-string を以下のように単純に書き直
したところ、かなり速くなりました。

  (defun migemo-replace-in-string (string from to)
    (with-temp-buffer
      (insert string)
      (goto-char (point-min))
      (let ((migemo-do-isearch nil))
        (while (search-forward from nil t)
          (replace-match to nil t)))
      (buffer-substring (point-min) (point-max))))

僕と同様に migemo-replace-in-string が遅くて困っている人も多
いかもしれないので、ひさしぶりに新しい版を公開したいと思います。



Migemo メーリングリストの案内