ExecNext が遅い…

SkRegExp の TSkRegExp.ExecNext が遅いことに気づいた。

TSkRegExp の ExecPos と Exec を1回実行するだけなら TRegEx より速い。

これは Google で “Regular expression bench mark” で検索して出てくる正規表現のベンチマークプログラムで検証している。

しかし、同じパターンで同じテキストを繰り返し検索すると遅くなる。

困ったことに遅くなる原因がよくわからない…。

TREMatchEngine.MatchEntry か、TMatchEngine.MatchPrim が遅いのだとは思う。

でも、どちらもこれ以上速くする余地があるとは思えないのだが。

“ExecNext が遅い…” への2件の返信

  1. 今まで XE 付属のツール AQTime で調べていました。

    Sampling Profiler は知りませんでした。

    便利そうですね。使ってみます。

    ExecNext が遅かったのはテスト環境の問題だったかもしれません。

    コレを書いた以降のテストでは速いので。

    SkRegExp の構造上、Exec と ExecPos を単独で実行する方が遅いはずです。

    したがって、ExecNext が遅いのは何かを根本的に間違えていたということになります。

    だから焦った次第です。

コメントを残す

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