LZ4는 무손실 압축 알고리즘으로 코어당 500MB/s 이상의 압축 속도를 제공하고 멀티 코어 CPU로 확장 가능합니다. 이는 코어당 여러 GB/s의 속도를 제공하는 매우 빠른 디코더를 갖추고 있으며 일반적으로 멀티 코어 시스템에서 RAM 속도 제한에 도달합니다.
더 빠른 속도를 위해 압축 비율을 교환하는 "가속" 요소를 선택하여 속도를 동적으로 조정할 수 있습니다. 다른 한편으로는 압축률이 높은 파생 제품인 LZ4_HC도 제공되어 향상된 압축률을 위해 CPU 시간을 교환합니다. 모든 버전은 동일한 감압 속도를 제공합니다.
LZ4는 API 및 CLI 수준 모두에서 사전 압축과도 호환됩니다. 최종 64KB만 사용되지만 모든 입력 파일을 사전으로 수집할 수 있습니다. 이 기능을 Zstandard Dictionary Builder와 결합하여 작은 파일의 압축 성능을 대폭 향상시킬 수 있습니다.
LZ4 라이브러리는 BSD 2-Clause 라이센스를 사용하여 오픈 소스 소프트웨어로 제공됩니다.
나뭇가지 | 상태 |
---|---|
개발자 |
벤치마크는 Linux 64비트(Ubuntu 4.18.0-17)에서 GCC v8.2.0으로 컴파일된 @inikep의 lzbench를 사용합니다. 레퍼런스 시스템은 Core i7-9700K CPU @ 4.9GHz(터보 부스트 포함)를 사용합니다. 벤치마크는 단일 스레드 모드에서 참조 Silesia Corpus의 압축을 평가합니다.
압축기 | 비율 | 압축 | 감압 |
---|---|---|---|
밈피 | 1.000 | 13700MB/초 | 13700MB/초 |
LZ4 기본값(v1.9.0) | 2.101 | 780MB/초 | 4970MB/초 |
LZO 2.09 | 2.108 | 670MB/초 | 860MB/초 |
퀵LZ 1.5.0 | 2.238 | 575MB/초 | 780MB/초 |
스내피 1.1.4 | 2.091 | 565MB/초 | 1950MB/초 |
Z표준 1.4.0 -1 | 2.883 | 515MB/초 | 1380MB/초 |
LZF v3.6 | 2.073 | 415MB/초 | 910MB/초 |
zlib 수축 1.2.11 -1 | 2.730 | 100MB/초 | 415MB/초 |
LZ4 HC -9(v1.9.0) | 2.721 | 41MB/초 | 4900MB/초 |
zlib 수축 1.2.11 -6 | 3.099 | 36MB/초 | 445MB/초 |
LZ4는 또한 x32 모드( -mx32
)와 호환되고 최적화되어 추가적인 속도 성능을 제공합니다.
make
make install # this command may require root permissions
LZ4의 Makefile
단계적 설치, 리디렉션 또는 명령 재정의를 포함한 표준 Makefile 규칙을 지원합니다. 병렬 빌드( -j#
)와 호환됩니다.
vcpkg 종속성 관리자를 사용하여 LZ4를 다운로드하고 설치할 수 있습니다.
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
vcpkg의 LZ4 포트는 Microsoft 팀 구성원과 커뮤니티 참가자에 의해 최신 상태로 유지됩니다. 버전이 오래된 경우 vcpkg 저장소에서 이슈 또는 풀 요청을 생성하세요.
원시 LZ4 블록 압축 형식은 lz4_Block_format에 자세히 설명되어 있습니다.
임의로 긴 파일이나 데이터 스트림은 스트리밍 요구 사항에 따라 여러 블록을 사용하여 압축됩니다. 이러한 블록은 lz4_Frame_format에 정의된 프레임으로 구성됩니다. LZ4의 상호 운용 가능한 버전은 프레임 형식도 준수해야 합니다.
C 참조 소스 외에도 많은 기여자가 여러 언어(Java, C#, Python, Perl, Ruby 등)로 lz4 버전을 만들었습니다. 알려진 소스 포트 목록은 LZ4 홈페이지에 유지됩니다.
대부분의 배포판에는 liblz4
라이브러리와 lz4
명령줄 인터페이스를 모두 쉽게 설치할 수 있는 패키지 관리자가 번들로 제공됩니다.