ホームページ  >  記事  >  バックエンド開発  >  「re.compile()」は本当に Python の正規表現のパフォーマンスを向上させますか?

「re.compile()」は本当に Python の正規表現のパフォーマンスを向上させますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-07 09:15:03548ブラウズ

Does `re.compile()` Really Improve Regular Expression Performance in Python?

re.compile() の有効性を調べる

Python の re.compile() を使用してパフォーマンスを向上させるのが一般的です。正規表現。ただし、このコンパイル手順が実際に大きな利点をもたらすかどうか疑問に思う人もいるかもしれません。

「hello world」と照合したい正規表現「hello」があるとします。以下に示すように、re.compile() を使用して式をコンパイルします:

h = re.compile('hello')
h.match('hello world')

そして、コンパイルなしで単純に re.match() を使用する場合と比較します:

re.match('hello', 'hello world')

は re.compile () パフォーマンス上の顕著な利点はありますか?

コンパイル済み正規表現を何千回も実行した場合とオンザフライでコンパイルした場合の個人的な経験に基づくと、知覚できる違いは観察されませんでした。これは、コンパイル プロセスが実行速度に大きな影響を与えない可能性があることを示唆しています。

さらなる調査により、Python は re.match() を使用している場合でも正規表現を内部的にコンパイルしてキャッシュしていることが判明しました。これは、コンパイルが行われると re.compile() が本質的に変更されますが、大幅な時間の節約にはつながらないことを意味します。実際の時間の節約は、内部キャッシュのチェックに必要な時間に限定されます。

したがって、正規表現をプリコンパイルするかどうかは、パフォーマンスの最適化ではなく、意図された用途に基づいて決定することをお勧めします。再利用可能な名前付き式の場合、プリコンパイルによってコードの可読性は向上しますが、実行速度が大幅に向上するわけではありません。

以上が「re.compile()」は本当に Python の正規表現のパフォーマンスを向上させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。