Uploaded image for project: 'S2Dao.PHP5'
  1. S2Dao.PHP5
  2. DAOPHP-23

SQLParserImplの正規表現のパフォーマンス改善

XMLWordPrintable

      $sql = preg_replace('/(.+);$/s', '\1', trim($sql));
      が、ボトルネックになっています。

      xdebugをいれて計測したところ、このpreg_replaceで3000文字ほどのSQLの処理
      に7秒かかっていました。
      最後の;があればすぐに処理が帰るのですが、セミコロンが存在しない文字列に
      対してこの正規表現を適用するとものすごく重くなります。正規表現の内部処理
      には疎いのでなぜ遅くなるかはわからないです。

      $sql = preg_replace('/;$/s', '', trim($sql));
      とすると、問題ない速度になりましたが、処理的にはあっていますでしょうか。

      see - http://ml.seasar.org/archives/seasar-php/2007-May/000129.html

            Assignee:
            nowel nowel
            Reporter:
            nowel nowel
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: