답변:
전체 파일을 읽고 줄 끝 수를 계산합니다. 줄 끝을 계산하는 것은 정말 저렴합니다. 대부분의 시간은 파일을 읽는 것입니다. 파일이 버퍼 캐시에 (대부분) 있다면, 그것도 싸다. 그렇지 않으면 파일 저장 속도에 따라 다릅니다.
다시 말해, 마법이 없습니다.
WC는 파일을 원시 바이트 블록으로 읽습니다 (파일이있는 기본 파일 시스템의 자연 블록 크기의 배수로 권장).
그런 다음 줄 끝 문자를 계산하는 버퍼를 검색합니다. -l 출력 이외의 정보를 원할 경우를 대비하여 공백, 탭, 용지 공급 및 기타 특수 문자도 계산합니다.
디스크 읽기는 속도 측면에서 비용이 많이 듭니다. 버퍼의 스캔은 그에 비해 무시할 수있는 시간이 걸립니다.
한 줄에 평균 100자인 9 천만 줄이 있다고 가정 해 봅시다.
약 9.000.000.000 자 또는 약 860MB입니다.
SATA-3Gb / s 드라이브가 장착 된 알맞은 PC는 10 초 이내에이를 수행합니다. 다른 활동이 동시에 진행되는 비교적 느린 파일 시스템에서도.
SATA-6G 및 SSD 드라이브에 의존하지 않아도 일부 성능 조정 및 최적화 된 파일 시스템을 갖춘 빠른 시스템은 5 초 이내에이를 수행 할 수 있습니다.
\n
문자 ( )를 세는 버퍼를 스캔합니다. "-l,-줄은 줄 바꿈 카운트를 출력합니다 \ n \"-에서 추출wc.c
wc -l
.. 죄송합니다 ...
자유 소프트웨어의 세계에 오신 것을 환영합니다. 당신은 항상 소스 코드를 볼 수 있습니다
난 당신 (내가 정말 코드를 설명 할 수있는 사람이 아니에요 그래서, C 프로그래머가 아니에요 것을 인정해야하지만 것 자신을 insterested 수).
내가 아는 것은 wc가 파일 자체를 열지 않지만 OS에게 파일을 요청하기 때문에 OS에 달려 있으며 물론 파일 저장 방법에 달려 있습니다. 그 외에도 파일을 한 번에 전체적으로 읽지 않는 등 올바른 프로그래밍 방법을 갖추어야합니다.