What’s a faster operation, re.match/search or str.find?

The question: which is faster is best answered by using timeit.

from timeit import timeit
import re

def find(string, text):
    if string.find(text) > -1:
        pass

def re_find(string, text):
    if re.match(text, string):
        pass

def best_find(string, text):
    if text in string:
       pass

print timeit("find(string, text)", "from __main__ import find; string='lookforme'; text="look"")  
print timeit("re_find(string, text)", "from __main__ import re_find; string='lookforme'; text="look"")  
print timeit("best_find(string, text)", "from __main__ import best_find; string='lookforme'; text="look"")  

The output is:

0.441393852234
2.12302494049
0.251421928406

So not only should you use the in operator because it is easier to read, but because it is faster also.

Leave a Comment