vim-jp » Vimのユーザーと開発者を結ぶコミュニティサイト

Regexp engine work

Posted at 2013/06/10


この記事は、Bram Moolenaar氏が開発者メーリングリスト vim_dev にポストしたメールの翻訳文です。

https://groups.google.com/d/msg/vim_dev/YOnT1yHMHUI/uugIVzc2D9AJ

既にお気付きかも知れませんが、私は新しい正規表現エンジンを実質的に高速化する為の変更を幾つか行いました。 シンタックスハイライトされた幾つかのファイル、それらの殆どが高速化された事を確認しました。 幾つかはとても高速化され、そしてまた幾つかは古い正規表現エンジンと同じでした。

もしまだ新しい正規表現エンジンを使っても、とても遅いという結果を見つけたら、問題を絞り込むのに以下を試してください。 この手順で動作するはずです:

:syn clear 
:set re=1 
:edit 
:syntime on 
< CTRL-L で何度か再描画して下さい > 
:syntime report 

きっちりと同じウィンドウサイズと表示状態を保持したまま、:set re=1:set re=2 に変更して同じテストを繰り返してください。 最初の結果と異なる物が幾つか見られるかと思います。

もし古い正規表現エンジンと新しい正規表現エンジンの両方で遅いのであれば、どうやったらそのシンタックスファイルが直せるか見つけ出してください。 疑う箇所は \_. (全ての位置の全ての物にマッチする) や \@<=\@<! といったパターンアイテムです。

現在、バグ修正のフェーズへ移行しています。幸いながらこの1,2週間以内にβテストバージョンの準備ができます。 私が計画していた、この小さいながら巨大な変更のリリースは成し遂げられるでしょう。

編集者注

メール内で使用されている syntime コマンドはコンパイルオプションにより +profile になった状態で無いと使用できません。 また上記を一括で行う方法が、このメールの返信で Ron Aaron 氏がポストしています。お知りになりたい方は上記MLをご覧ください。

vim-jp では上記の、万が一遅くなってしまったシンタックスファイルの報告をお待ちしています。


もどる