予めコンパイルしてキーワードチェックしたら

5月 25th, 2017

長くなりすぎたので記事を分割。

前回の記事で、正規表現のパターンをコンパイルしない場合、結局、単純なキーワード照合なら、正規表現を使わない方が早いようだ、という結論に達した。

じゃあ、パターンをまとめてコンパイルしておいたらどうなる、というのをちょっとやってみた。

—–
#coding;UTF-8
import re
import time

patlist3=['(私|僕|彼|それ)は','君は','あれは']
st=’私は、みかんが好きです’

repat=[]
t5=time.time()
for pat in patlist3:
    p=re.compile(pat)
    repat.append(p)
for i in range(0,10000):
    for rep in repat:
        p=rep.search(st)
        if p:
            pass
t6=time.time()
print (t6-t5)

—–
初めにパターンをまずコンパイルしてリスト化。で、それを使ってstにマッチするか照合。

で、結果は…0.0156…おおっ、何か早いぞ。走らせてみたところでは、前回いちばん早かった「正規表現全くなし」の場合とあまり変わらないくらいの速度が出ている。

そうか、頻繁に使うなら、まとめてでもコンパイルした方が早いんだな。

こうやって猛スピードで走っているのを見ると、ちょっぴりCが恋しくなる・・・ってほんの少しかじっただけだけど。Cは早かった。ものすごく早かった。絶えず暴走していた(いや、アンタが暴走させたんだろう)。

ちなみに、私はPythonすら暴走させたことがある・・・。我ながら危険。

関連記事

  1. 正規表現vs類語辞書
  2. 再びアプリ化…
  3. pythonで音を鳴らす
  4. 正規表現コンパイルする?しない?
  5. 正規表現とどっちが早い?

Comments are closed.