4

この投稿では正規表現をプリコンパイルするとスクリプトのパフォーマンスが向上すると言われています。著者はそれを性能テストで証明しています。ただし、私が理解している限り、投稿は正規表現を繰り返し使用する場合について話している. スクリプトに多数の正規表現があり、それぞれが 1 回しか使用されていない場合はどうなるでしょうか? スクリプト全体で一度だけ使用される正規表現をプリコンパイルすると、パフォーマンス上の利点はありますか?

4

3 に答える 3

3

あなたがリンクしたパフォーマンス テストが決定的なものだとは思いません。結果を見ると、正規表現が十分に複雑でないため、違いはごくわずかです。もう少し良い答えについては、このテストを見てください。

いずれにせよ、正規表現を複数回使用する場合にのみ、正規表現の値を保存してもパフォーマンスが向上します。このパフォーマンスの向上は、正規表現自体の初期コンパイル オーバーヘッドのみが原因です。正規表現を変数に格納している場合でも、リテラルが最初にコンパイルされるのと同じように、最初にコンパイルされます。違いは、格納された正規表現が2回目に使用され、既にコンパイルされている場合に発生しますが、リテラル正規表現は再度コンパイルする必要があります。

于 2014-02-20T15:06:14.193 に答える
1

一度だけ使用する場合は、正規表現リテラルを使用してください。

あなたの指摘は有効です。同じ正規表現を頻繁に使用する場合にのみ意味があります。

于 2013-02-18T23:40:16.550 に答える