반응형
정규식 표현에 re 라이브러리를 사용하는데, 어느정도 성능적인 이점을 가져가면서 사용할 수 있는지 확인하기 위해서 비교해보았다.
import timeit
import re
# 정규식 사용
def find_strings_three_more_numbers(input_string):
pattern = r'\D*\d\D*\d\D*\d\D*'
matches = re.findall(pattern, input_string)
return matches
# 직접 구현
def has_three_more_numbers(input_string):
num_count = 0
for char in input_string:
if char.isdigit():
num_count += 1
if num_count >= 3:
return True
else:
num_count = 0
return False
# 예시 문자열
example_string = "한글 방식으로 수정해도 됨. 12 and 69."
# 정규식 성능 측정
regex_time = timeit.timeit('find_strings_three_more_numbers(example_string)', globals=globals(), number=10000)
# 직접 구현 성능 측정
direct_implementation_time = timeit.timeit('has_three_more_numbers(example_string)', globals=globals(), number=10000)
# 결과 출력
print('Regex 실행 시간:', regex_time)
print('Direct 실행 시간:', direct_implementation_time)
timeit 라이브러리는 성능 비교시 사용하기 유용한 라이브러리 이다.
테스트할 함수를 적고, number를 통해 반복 횟수를 정해주면 실행후 결과 값으로 실행 시간을 반환해준다.
![](https://blog.kakaocdn.net/dn/kOWki/btsHSXl22VS/V1Glklm1IS9otXN3983Aa0/img.png)
테스트 결과는 문장이 짧은 경우 크게 차이가 없지만, 문장이 길어질 경우 성능적 차이는 확연하게 창이나는 것을 알 수 있었다. 필자가 판단하기로는 40-50자가 넘어가면, 성능적으로 적접 구현한 함수가 가장 적은 리소스로 동작이 가능할 것으로 판단된다.
단 비교 문장이 짧은 경우에는 성능적 이점이 크지 않기 때문에, 자신의 상황에 맞게 사용하도록 하자.
반응형
'Python' 카테고리의 다른 글
Python - 리스트(list) 중복제거, 고유값 만들기 (0) | 2024.06.08 |
---|---|
Python - ' '.join() 리스트(list) 연결하여 문자열 로 만들기 (0) | 2024.06.08 |
Python - Days, 날짜 Count 쉽게 계산하기 (0) | 2024.04.24 |
Python - 리스트(Lists)간 교집합(중복/공통값), 합집합(고유/유일값) 값 확인하기 (0) | 2024.04.12 |
Django - MySQL/MariaDB 연결하기 (0) | 2024.04.12 |