2023년 6월 15일 목요일

VIM 꼼수의 발견 - 10th

후방탐색 기능은 다른 정규표현식과 달리 왼쪽과 오른쪽을 왕복하는 검사 방식 때문에 자원 소모가 많다.

데이터 분석이 쉬워지는 정규표현식(195p)

이때 pcre는 후방탐색을 대체할 수 있는 메타문자 \K를 제공한다. 다음은 후방탐색과 \K의 성능 비교.
[root@Centos7 ~]# time grep -ciP "(?<=mozilla).*" apache.log
230042

real    0m0.995s
user    0m0.960s
sys     0m0.035s
[root@Centos7 ~]# time grep -ciP "mozilla\K.*" apache.log
230042

real    0m0.190s
user    0m0.169s
sys     0m0.021s

\K는 후방탐색과 달리 오른쪽으로만 검사를 진행하기 때문에 검사 결과가 달라질 수 있음에 주의.


VIM은 \K 대신 \zs


비교해보면 알 수 있지만 \zs(tart)가 훨씬 빠르다. 참고로 vim은 전방탐색을 대체할 수 있는 메타문자 \ze(nd)도 제공하는데 역시 빠르다. 검사 방식은 같을 거 같은데 희한하네 구문도 간단해서 앞으로 애용해야겠음. 이 좋은 걸 이제 알다니(..)


댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스