Pythonの正規表現の実行速度比較

Web開発

今回は簡単にですが、Pythonの正規表現についてです。プログラマーなら、仕事で一度は出会うことになる正規表現ですが、実行速度を計測したことがなかったので、それを記載しておきます。

正規表現とは?

正規表現とは、ある文字列のパターンを式で定義して、マッチするかどうかを調べるパターンマッチングのことです。

Pythonの正規表現

Pythonの正規表現では、主にmatchとcompileの2つの方法で記載できます。※もっとあるが、ここでは触れない。

import re

re_str = r"test"
target = "test"

# match
match = re.match(re_str, target)
if match:
  print("Matched")
else:
  print("Not matched")

# compile
prog = re.compile(re_str)
match = prog.match(target)
if match:
  print("Matched")
else:
  print("Not matched")

re_str: 正規表現の文字列
target: 正規表現にマッチしているのか調べる対象

この例では、単に”test”という文字列が含まれていれば、マッチします。

※正規表現の記載方法は、このqiitaの記事にわかりやすくまとめられてました。
https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3

実行速度

以下、matchとcompileの実行速度です。いままで計測したことがなかったのですが、気になったので計測してみました。

import re, time

# match
start = time.time()

for test in range(0,10000):
  re.match(r"test","test")

end = time.time()
result = (end - start)

print( "match time: %s sec" %  result)

# compile
start = time.time()

prog = re.compile(r"test")
for test in range(0,10000):
  prog.match("test")

end = time.time()
result = (end - start)

print( "compile time: %s sec" %  result)

結果:

match time: 0.03054213523864746 sec
compile time: 0.0130767822265625 sec

やはりcompileしたほうが速いですね。繰り返し同じパターンをチェックするときには、compileしたものを使用したほうがよいです。

タイトルとURLをコピーしました