lazy bytestrings을 사용하여 대용량 데이터 스트림을 읽고, 파싱하는 동안 X 바이트 이상을 사용할 수 있는지 알고 싶습니다. 즉, 바이트 테스트가 X 바이트 이상인 지 알고 싶습니다.Haskell에서 Lazy ByteString의 길이를 호출하면 전체 문자열이 메모리에 저장됩니까?
length
을 호출하면 전체 스트림이로드되므로 결과적으로 게으른 바이트 스트링을 사용하지 않을 수 있습니까?
그렇다면 다음과 같은 결과가 발생합니다. 전체 스트림을로드하지 않고 X 바이트 이상을 보유하고 있는지 확인하는 방법은 무엇입니까?
편집 : 원래 파일을 읽는 맥락에서 질문했지만 파일 크기를 결정할 수있는 더 나은 방법이 있다는 것을 알고 있습니다. 그러나 내가 필요로하는 최고의 궁극적 인 해결책은 게으른 바이트 테스트 소스에 의존해서는 안됩니다.
감사합니다. 그래서 대답은 yes입니다. length를 사용하면 전체 문자열이 메모리에로드됩니다. – me2
예, 길이가 전체 목록을 강제로 "load : it."따라서 "take"형태의 대책 – ADEpt
그래서 우리는 모두 이해합니다. 예 길이는 문자열을 메모리로 강제합니다. 따라서 take x 먼저 최소한 x 바이트를 메모리에 강제로 저장합니다. – MtnViewMark