스트리밍 I/O를 지원하는 프로그램을 확인하는 방법

스트리밍 I/O를 지원하는 프로그램을 확인하는 방법

내가 아는 바로는 스트리밍 I/O를 지원하는 프로그램은 메모리 크기보다 큰 파일을 처리할 수 있습니다. 맞습니까?

스트리밍 I/O를 지원하는 프로그램을 알 수 있는 방법이 있습니까?

답변1

프로그램이 스트리밍 I/O를 지원하면 메모리 크기보다 큰 파일을 처리할 수 있습니까?

일반적으로 그렇습니다. 그러나 반드시 그런 것은 아닙니다. uniq입력에서 각 고유 행의 발생 횟수를 계산하는 비슷하지만 더 복잡한 프로그램을 상상해 보세요 . 이와 달리 uniq지금까지 발생한 이벤트의 총 개수를 출력합니다. 따라서 입력을 받으면서 점진적으로 출력을 생성하므로 스트리밍으로 간주됩니다. 그러나 입력의 모든 라인이 고유하거나 그에 가까운 경우 실행 횟수를 유지하기 위해 데이터 구조의 모든 다른 라인을 기억해야 하며 실제로 메모리보다 큰 파일을 처리할 수 없습니다.

어떤 프로그램이 스트리밍 I/O를 지원하는지 알 수 있는 방법이 있습니까?

문서화되어 있지 않거나 직접 확인할 수 없다면, 아닙니다. 왜냐하면 프로그램이 수행하는 작업에 따라 다르기 때문입니다.

하지만 가까운 작업을 수행할 수 있습니다. 즉, 프로그램에 검색 가능한 입력 파일이 필요한지 여부를 테스트할 수 있습니다. 일부 프로그램은 파이프나 일반 파일(또는 소켓이나 기타 파일)을 입력으로 받아들입니다. 다른 사람들은 일반 파일만 받아들일 수 있습니다. 프로그램이 일반 검색 가능한 파일 사용을 요구한다면 어떤 종류의 스트리밍도 수행하지 않을 가능성이 높습니다. 파이프를 입력으로 허용한다면 그렇게 할 가능성이 높습니다. 그러나 예외가 있습니다. 예를 들어 sort파이프는 입력으로 허용되지만 스트리밍되지 않습니다. 입력이 끝난 후에는 아무것도 출력하지 않습니다.

관련 정보