タグ

2024年4月18日のブックマーク (2件)

  • Goの正規表現が遅いって言う人がいたから、(速い)正規表現エンジンを作ったよ

    はじめに 「Goの正規表現は遅い」 そんなふうによく言われていました。(最近はあまり聞かなくなりましたが) たとえば、↓の記事ではPythonの正規表現と比較して1.5倍くらい遅いという結果になっています: この話には「Goの正規表現は最悪時間が短くなるように安定したアルゴリズムを採用しているから」という回答があります: ↑の記事の比較では、GoPerlに対して約10倍以上高速という結果が出ているので、「Goの正規表現は遅くない!はい、論破ー!」というわけですね。 なんでこうなるのかも↑の記事で説明されているとおりですが、Perl(などのバックトラック型エンジン)が入力長に対して指数関数的に実行時間が伸びていくのに対し、Goの正規表現エンジンは入力長に対して線形時間で実行時間が伸びていくアルゴリズムを採用しているため、入力が長くなると急激にGoのほうが有利になるからです: 一方で、入力が

    Goの正規表現が遅いって言う人がいたから、(速い)正規表現エンジンを作ったよ
  • Golangの正規表現の処理速度 - seven_901’s blog

    概要 Golangで正規表現を扱うことになったので、ググったところgolangのサジェストワードに「遅い」というワードが出てきた。 なので、調査してみた。 Golangの正規表現 実装 pkg.go.dev 上記のサイトはGolangで正規表現を扱うときに使われるregexpパッケージの公式ドキュメント。 ドキュメントによる処理速度に関する記述では The regexp implementation provided by this package is guaranteed to run in time linear in the size of the input. (This is a property not guaranteed by most open source implementations of regular expressions.) と書かれており、ざっくり日

    Golangの正規表現の処理速度 - seven_901’s blog