왜 "detex"가 포함된 "쓸데없는 고양이 사용"이 대안보다 10배 더 빠른가요?

왜 "detex"가 포함된 "쓸데없는 고양이 사용"이 대안보다 10배 더 빠른가요?

LaTeX 파일의 단어 수를 세고 다음 명령을 시각적으로 사용했습니다.

$ cat *tex | detex | wc -w

그러다가 나는 그 사람을 즉시 알아차렸습니다.쓸모없는 사용cat, 다음 코드를 사용하여 작업을 다시 실행했습니다.

$ detex *tex | wc -w

추가 과정을 안한게 자랑스럽고 를 사용하지 않아서 확인해 보고 싶었는데 cat이 버전을 보고 깜짝 놀랐습니다.그리고 cat실제로 10배 더 빠릅니다:

$ time cat *tex | detex | wc -w
    5000

real    0m0.013s
user    0m0.005s
sys 0m0.007s
$ time detex *tex | wc -w
    5000

real    0m0.144s
user    0m0.124s
sys 0m0.014s

이렇게 속도 차이가 나는 이유는 무엇일까요? cat디스크에서 파일을 읽는 것보다 디스크에서 파일을 읽는 것이 훨씬 더 빠르나요 detex?


벤치마킹을 위해 5개의 샘플 "LaTeX" 파일을 생성했습니다.

$ for i in {1..5}; do shuf -n 1000 /usr/share/dict/words > "file${i}.tex"; done

답변1

예비 결과는 일관성이 없는 것으로 보입니다.

detex최신 버전이 설치됨스스로 만든:

$ detex -v

OpenDetex version 2.8.9
https://github.com/pkubowicz/opendetex

예제 LaTeX 파일을 얻으세요:

$ curl https://raw.githubusercontent.com/latex3/latex3/main/articles/2011-current-state.tex > file.tex

파일 복사본을 100개 만들었습니다.

$ for i in {1..100}; do cp file.tex "file${i}.tex"; done

cat버전을 5번 실행하세요:

$ for i in {1..5}; do time cat *tex | detex | wc -w; done
   78174

real    0m0.024s
user    0m0.025s
sys 0m0.012s
   78174

real    0m0.021s
user    0m0.023s
sys 0m0.009s
   78174

real    0m0.019s
user    0m0.020s
sys 0m0.008s
   78174

real    0m0.019s
user    0m0.019s
sys 0m0.008s
   78174

real    0m0.017s
user    0m0.018s
sys 0m0.008s

cat버전을 5번 실행하세요:

$ for i in {1..5}; do time detex *tex | wc -w; done
   78174

real    0m0.027s
user    0m0.023s
sys 0m0.009s
   78174

real    0m0.024s
user    0m0.021s
sys 0m0.007s
   78174

real    0m0.021s
user    0m0.020s
sys 0m0.005s
   78174

real    0m0.019s
user    0m0.017s
sys 0m0.005s
   78174

real    0m0.018s
user    0m0.016s
sys 0m0.005s

관련 정보