이 라이브러리는 두 가지 고속 엔트로피 코더를 제안합니다.
Huff0 은 최신 CPU용으로 설계된 허프만 코덱으로, 여러 ALU(산술 논리 장치)에서 OoO(Out of Order) 작업을 수행하여 매우 빠른 압축 및 압축 해제 속도를 달성합니다.
FSE 는 Jarek Duda의 ANS 이론을 기반으로 하는 새로운 종류의 엔트로피 인코더로, 훨씬 더 빠른 속도에서 정확한 압축 정확도(예: 산술 코딩)를 달성합니다.
나뭇가지 | 상태 |
---|---|
주인 | |
개발자 |
벤치마크는 Linux Mint 64비트를 사용하는 Intel Core i7-5600U에서 실행됩니다. 소스 코드는 GCC 4.8.4, 64비트 모드를 사용하여 컴파일됩니다. 테스트 파일은 제공된 probagen
프로그램을 사용하여 생성됩니다. 벤치마크는 샘플 파일을 32KB 블록으로 나눕니다. Huff0
및 FSE
Frederic Kayser가 제공하는 zlib 내의 허프만 인코더인 zlibh
와 비교됩니다.
파일 | 코덱 | 비율 | 압축 | 감압 |
---|---|---|---|---|
프로바80 | ||||
허프0 | 6.38 | 600MB/초 | 1350MB/초 | |
FSE | 8.84 | 325MB/초 | 440MB/초 | |
zlibh | 6.38 | 265MB/초 | 300MB/초 | |
프로바14 | ||||
허프0 | 1.90 | 595MB/초 | 860MB/초 | |
FSE | 1.91 | 330MB/초 | 460MB/초 | |
zlibh | 1.90 | 255MB/초 | 250MB/초 | |
프로바02 | ||||
허프0 | 1.13 | 525MB/초 | 555MB/초 | |
FSE | 1.13 | 325MB/초 | 445MB/초 | |
zlibh | 1.13 | 180MB/초 | 210MB/초 |
설계상 Huffman은 "기호당 1비트" 제한을 위반할 수 없으므로 Proba80
과 같은 압축된 배포판에서는 효율성이 떨어집니다. FSE에는 이러한 제한이 없으며 압축 효율성은 모든 상황에서 Shannon 제한에 가깝게 유지됩니다. 그러나 이 정확도가 항상 필요한 것은 아니며 압축률이 낮은 분포는 Huffman과 거의 차이가 없습니다. 측면에서 Huff0은 엄청난 속도 이점을 제공합니다.
외부 기여를 환영하고 장려합니다. "마스터" 분기는 안정적인 릴리스만 호스팅하기 위한 것입니다. "dev" 브랜치는 모든 기여가 병합되는 브랜치입니다. 패치를 제안하려면 "dev" 브랜치나 전용 기능 브랜치에 커밋하세요. "마스터"에 대한 직접 커밋은 허용되지 않습니다.