シンプルな繰り返しの最適化

文字クラスの最適化は、TRECode.ExecRepeat の導入でそこそこ速くなったので取り敢えず放置。

文字クラスの高速化はまた次の機会に。

やはり、正規表現の高速化に貢献するのは圧倒的に繰り返しの最適化。

今は、シンプルな繰り返しのさらなる最適化中。

ちなみに、シンプルな繰り返しとは以下のような正規表現

a*
a+
a*b
a+b

繰り返しの対象がリテラルなもの、また、繰り返しの次がリテラルなものの最適化を薦めています。

たとえば、a*b の場合、現在位置の文字が b でない限り、バックトラックのステートを残す必要がありません。

その分高速に処理ができます。

同じことは、a*?b のような正規表現でも同じことが言えそうなんですが、イマイチ自信がないので、こっちはもう少し検証します。

コメントを残す

メールアドレスが公開されることはありません。