LZ4(압축 알고리즘)
LZ4 (compression algorithm)원저작자 | 얀 콜레 |
---|---|
개발자 | 얀 콜레 |
초기 릴리즈 | 2011년 4월 24일( |
안정된 릴리스 | 1.9.3 / 2020년 11월 16일, [1] 전( |
저장소 | |
기입처 | C |
운영 체제 | 크로스 플랫폼 |
플랫폼 | 휴대용 |
유형 | data 압축 |
면허증. | 간이 BSD 라이선스 |
웹 사이트 | lz4 |
매직 넘버 | 04 22 4d 18 [2] |
---|---|
포맷의 종류 | data 압축 |
웹 사이트 | https://github.com/lz4/lz4/blob/master/doc/lz4_Frame_format.md |
LZ4는 압축 및 압축 해제 속도에 초점을 맞춘 무손실 데이터 압축 알고리즘입니다.이것은 LZ77 계열의 바이트 지향 압축 방식에 속합니다.
특징들
LZ4 알고리즘은 속도와 압축률의 균형을 잘 맞추는 것을 목표로 합니다.일반적으로 유사한 LZO 알고리즘보다 압축비가 작으며(즉, 더 나쁨) DEFLATE와 같은 알고리즘보다 나쁨을 나타냅니다.그러나 LZ4 압축 속도는 LZO와 비슷하고 DEFLATE보다 몇 배 빠른 반면 감압 속도는 LZO보다 [3]상당히 빠릅니다.
설계.
LZ4는 사전 일치 단계(LZ77)만을 사용하며, 다른 일반적인 압축 알고리즘과는 달리 엔트로피 부호화 단계(예를 들어 DEFLATE의 [4][5]허프만 부호화)와 결합하지 않는다.
LZ4 알고리즘은 데이터를 일련의 시퀀스로 나타냅니다.각 시퀀스는 2개의 4비트필드로 분할된1바이트 토큰으로 시작합니다.첫 번째 필드는 출력에 복사되는 리터럴바이트 수를 나타냅니다.두 번째 필드는 이미 디코딩된 출력 버퍼에서 복사하는 바이트 수를 나타냅니다(0은 4바이트의 최소 일치 길이를 나타냅니다).어느 비트필드의 값이 15일 경우 길이가 더 크고 그 길이에 추가되는 추가 데이터 바이트가 있음을 나타냅니다.이러한 추가 바이트의 값이 255일 경우 추가 바이트가 있음을 나타냅니다.따라서 임의의 길이는 값 255를 포함한 일련의 추가 바이트로 나타난다.리터럴 문자열은 토큰 및 문자열 길이를 나타내기 위해 필요한 추가 바이트 뒤에 옵니다.그 뒤에 출력 버퍼에서 복사를 시작할 때까지의 시간을 나타내는 오프셋이 계속됩니다.match-length의 추가 바이트(있는 경우)는 시퀀스 [6][7]끝에 있습니다.
압축은 스트림 또는 블록에서 수행할 수 있습니다.최적의 일치를 찾는 데 더 많은 노력을 기울이면 압축률을 높일 수 있습니다.그 결과 출력도 작아지고 압축 해제도 빨라집니다.
실행
Yann Collet에 의한 C의 참조 실장은 BSD 라이선스에 따라 라이선스가 부여됩니다.Java, C#, [8]Python 등 다양한 언어로 된 포트와 바인딩이 있습니다.Apache Hadoop 시스템은 빠른 압축을 위해 이 알고리즘을 사용합니다.LZ4는 Linux 커널 3.11에도 [9]네이티브로 구현되어 있습니다.ZFS 파일 시스템의 FreeBSD, Illumos, ZFS 및 ZFS-OSX 구현은 온 더 플라이 [10][11][12][13]압축을 위한 LZ4 알고리즘을 지원합니다.Linux는 3.19-rc1 [14]이후 SquashFS용 LZ4를 지원합니다.LZ4는 Yann Collet에 의해 새로운 Zstd 아치버에도 구현됩니다.
- LZ4는 확장 7zip-Version: 7-zip-zstd 지원
- Lizard(이전 LZ5)는 1초당 1000MB 이상의 고속 압축 해제에 의한 LZ4의 개량형으로 7zip-zstd로도 이용할 수 있습니다.
레퍼런스
- ^ "LZ4 latest release". Github. Retrieved 15 January 2021.
- ^ Collet, Yann. "LZ4 Frame Format Description". GitHub. Retrieved 7 October 2020.
- ^ Michael Larabel (28 January 2013). "Support For Compressing The Linux Kernel With LZ4". Phoronix. Retrieved 28 August 2015.
- ^ Collet, Yann (30 March 2019). "LZ4 Block Format Description". GitHub. Retrieved 9 July 2020.
There is no entropy encoder back-end nor framing layer.
- ^ DEFLATE Compressed Data Format Specification version 1.3. IETF. doi:10.17487/RFC1951. RFC 1951. Retrieved 9 July 2020.
- ^ Yann Collet (26 May 2011). "RealTime Data Compression". Retrieved 28 August 2015.
- ^ ticki (25 October 2016). "How LZ4 works". Retrieved 29 June 2017.
- ^ GitHub에서의 초고속 압축 알고리즘 http://www.lz4.org
- ^ Jonathan Corbet (19 July 2013). "Kernel development". LWN.net. Retrieved 28 August 2015.
- ^ "FreeBSD 9.2-RELEASE Release Notes". FreeBSD. 13 November 2013. Retrieved 28 August 2015.
- ^ "LZ4 Compression". illumos. Retrieved 28 August 2015.
- ^ ZFS에서의 Illumos #3035 LZ4 압축 지원 및 GitHub에서의 GRUB
- ^ "Features: lz4 compression". OpenZFS. Retrieved 28 August 2015.
- ^ Phillip Lougher (27 November 2014). "Squashfs: Add LZ4 compression configuration option". Retrieved 28 August 2015.