단어 세기: CPU, wc 또는 perl 스크립트를 덜 사용하는 것은 무엇입니까?

단어 세기: CPU, wc 또는 perl 스크립트를 덜 사용하는 것은 무엇입니까?

내 목표는 가능한 한 적은 CPU를 사용하면서 파일의 단어 수를 계산하는 것입니다.

wc명령을 사용하거나 이를 위해 간단한 Perl 스크립트를 작성할 수 있습니다. 이 두 가지 옵션 중 CPU를 덜 사용하는 옵션은 무엇입니까?

답변1

CPU 시간을 덜 사용할 것으로 예상됩니다 wc. C로 작성되었으며 시간이 지남에 따라 신중하게 최적화되었습니다. 하지만 직접 테스트하지 않을 이유가 없습니다. timePerl 스크립트의 성능을 비교할 수 있습니다 wc. 이 time명령을 사용하면 다음과 같은 출력을 얻을 수 있습니다.

> time wc /usr/share/dict/words
 119095  119095 1145922 /usr/share/dict/words
wc /usr/share/dict/words  0.03s user 0.00s system 98% cpu 0.030 total

이 예에서는 wc총 0.030초의 CPU 시간이 사용되었습니다.

답변2

일반적 wc으로 단일 명령줄 도구(예:

여러 "명령"을 함께 연결해야 하는 경우에만 솔루션을 서로 연결하는 것에서 Perl, Python 또는 Ruby와 같은 고급 언어로 문제를 해결하는 것으로 전환하는 것이 합리적입니다.

명령을 함께 연결하는 데 드는 비용은 간단한 도구를 여러 번 실행해야 하는 경우가 많습니다.

답변3

나는 @wingedsubmariner에 동의합니다. wc여러분이 작성한 어떤 Perl 버전보다 빠르다는 것이 거의 확실합니다.

$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" wc /usr/share/dict/words
 99171  99171 938848 /usr/share/dict/words
0.02user 0.00system 0:00.02elapsed 86%CPU
$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" \
  perl -ane '$k+=$#F+1; END{print "$k\n"}' /usr/share/dict/words
99171
0.09user 0.00system 0:00.09elapsed 96%CPU

관련 정보