내 문자열은 다음과 같은 파일 경로입니다 s/14/11/13/15/n7ce49B_235_25ed2d70.jpg
. 내 패턴은 모두 매우 간단한 패턴 n7ce49B_.+
입니다.
15k HDD의 Dell DL360G7 서버 GNU grep 2.6.3
에서 Debian 6.0.10 으로 실행 중 입니다 (이 기계 성능을 설명하기 위해 언급했습니다).이 명령 : 완료 할 수 없습니다-서버 교환이 너무 심합니다. 20k 패턴으로 3 시간 이상 걸립니다.time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_file
그것은 나에게 불합리한 것 같습니다.
주석 요청에 따라 파일이 있습니다. 파일 경로 20k 패턴
다음을 사용하여 입력 라인과 패턴의 수를 테스트하고 조정할 수도 있습니다.
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 |
grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
글쎄, 90k는 원래 입력 크기이며 그로 인해 기계 스왑이 너무 어려워 그렙을 죽여야합니다. 그런 다음이 파일을 20k 파일로 분할하려고 시도했지만 여전히 끔찍하게 작동합니다 ...하지만 당신은 내 설명이 일치하지 않는다고 생각합니다.
—
skaurus
에 서버에 초과 사용 세가 발생했는지 (일부 다른 리소스가 부족한 작업을 수행하고 있는지) 확인하십시오
—
agc
grep
.
로 재현 할 수 있습니다
—
Stéphane Chazelas 2016 년
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
. 정규 표현식을 컴파일하고 많은 메모리를 할당하는 데 시간이 걸린 것 같습니다. 함께 -F
대신 -E
, 그것은 순간입니다.
그 문제를 들어,하지 않는 것이
—
스테판 Chazelas가
n7ce49B_.+
에 해당합니다n7ce49B_.
90k
, 설명에20K
패턴이 있음