Zstd 스트림에서 Flexi 스트림을 사용하여 라인을 읽는 것은 빠르지 않습니다.
4688 단어 flexistreamscommonlisp
(defun average-1000-etipitaka-flexi-streams ()
(with-open-file (f #P"etipitaka.txt.zst" :element-type '(unsigned-byte 8))
(zstd:with-decompressing-stream (zs f)
(let ((s (utf8-input-stream:make-utf8-input-stream zs)))
(loop for line = (read-line s nil nil)
until (null line)
count 1 into l
sum (length line) into c
when (> l 1000) do (return (float (/ c l)))
finally (return (float (/ c l))))))))
etipitaka.txt.zst 파일의 텍스트는 다음과 같습니다.
สิงสถิต เขตเมืองเวรัญชา พร้อมด้วยภิกษุสงฆ์หมู่ใหญ่ประมาณ ๕๐๐ รูป เวรัญชพราหมณ์
ได้สดับข่าวถนัดแน่ว่า ท่านผู้เจริญ พระสมณะโคดมศากยบุตร ทรงผนวชจากศากยตระกูล
ประทับอยู่ ณ บริเวณต้นไม้สะเดาที่นเฬรุยักษ์สิงสถิต เขตเมืองเวรัญชา พร้อมด้วยภิกษุสงฆ์
평균 줄 길이는 68.8바이트입니다.
Celeron N4500이 장착된 노트북의 SBCL 2.2.5-1.1-suse에서 평균 1000-etipitaka-flexi-streams를 실행했습니다. 1.591초가 걸렸다.
그런 다음 파일을 평균 줄 길이가 515.5바이트인 my-data.ndjson.zst로 변경합니다. average-1000-ndjson-flexi-streams를 실행하는 데 4.411초가 걸렸습니다.
그래서 제 커스텀utf8-input-stream으로도 테스트를 했습니다. average-1000-etipitaka-utf8-input-stream 및 average-1000-ndjson-utf8-input-stream을 실행하는 데 각각 0.019초 및 0.043초가 걸렸습니다. 이러한 테스트에서 Flexi-stream보다 긴 라인의 경우 더 빠릅니다.
Reference
이 문제에 관하여(Zstd 스트림에서 Flexi 스트림을 사용하여 라인을 읽는 것은 빠르지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/veer66/reading-lines-using-flexi-streams-on-a-zstd-stream-is-not-fast-3a0o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)