문자 검색 속도 비교. 정규표현식 vs. in연산자

수 백만개의 대화 문장을 분류하는 작업을 하던중 궁금증이 생겼다.

대화 문장 안에 http, https, ftp 등이 포함되어 있는지 판별하는 방법으로
정규표현식파이썬 'in 연산자'의 속도가 얼마나 차이나는지 비교하였다.

정규표현식이 압도적으로 빠르다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
text = 'ㅈ소기업이 굴러가는 법.gif - 악플달면 쩌리쩌려버려 - *여성시대* 차분한 20대들의 알흠다운 공간 - https://m.cafe.daum.net/subdued20club/ReHf/2988786?svc=kakaotalkTab&bucket=toros_cafe_channel_alpha'
 
%%timeit
re.search(r'(http|https|ftp):\/\/', text)
// 1.4 µs ± 10.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
 
%%timeit
('http://' in text) or ('https://' in text) or ('ftp://' in text)
// 225 ns ± 10.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
 
%%timeit
('http://' in text) or ('https://' in text)
// 243 ns ± 13.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
cs

댓글