코어당 초당 500MB 이상 압축 속도로 데이터 처리 속도를 높이는 손실 없는 압축 도구
대용량 데이터를 실시간으로 처리해야 하지만 압축 단계에서 속도가 늦어지는 상황을 겪고 있다면, 이 도구가 답이 될 수 있습니다. LZ4는 데이터를 원래대로 완벽히 복원할 수 있는 손실 없는 압축 방식으로, 코어당 초당 500MB 이상의 압축 속도를 내며 멀티코어 CPU에서 성능이 비례적으로 확장됩니다. 압축된 데이터를 다시 풀 때도 코어당 수 GB/s의 속도로 동작해 메모리 속도 한계까지 도달하는 경우가 많습니다.
속도와 압축률의 균형 조절
LZ4는 고정된 성능이 아니라 상황에 따라 속도와 압축률의 균형을 조절할 수 있습니다. '가속도' 인자를 동적으로 선택하면 압축률이 낮아지는 대신 속도가 더 빨라집니다. 반대로 더 높은 압축률을 원한다면 CPU 시간을 더 쓰더라도 압축률이 개선되는 파생 버전인 LZ4_HC를 사용할 수 있습니다. 어떤 버전을 쓰든 압축 해제 속도는 동일하게 유지되어, 압축 방식에 관계없이 데이터 복원 단계의 지연은 최소화됩니다.
사전 기반 압축으로 소형 파일 성능 향상
LZ4는 API와 명령줄 인터페이스(-D) 모두에서 사전(dict) 기반 압축을 지원합니다. 입력 파일 중 마지막 64KB만 사전으로 사용하지만, 이를 Zstandard 사전 빌더와 결합하면 소형 파일의 압축 성능을 크게 높일 수 있습니다. 이는 반복되는 패턴이 많은 작은 파일들을 효율적으로 처리할 때 특히 유용한 기능입니다.
벤치마크 결과와 비교 대상
README에 제시된 벤치마크는 lzbench v2.4.1을 사용해 Core i7-9700K CPU에서 Silesia Corpus를 단일 스레드로 압축한 결과입니다. LZ4 기본 설정(v1.11.0)은 압축 속도 770 MB/s, 압축 해제 속도 4950 MB/s를 기록했습니다. 같은 조건에서 LZO 2.10은 압축 660 MB/s, Snappy 1.3.1은 520 MB/s, Zstandard 1.5.7은 510 MB/s의 압축 속도를 보였습니다. 압축 해제 속도에서는 LZ4가 4950 MB/s로 LZO(800 MB/s)나 Snappy(1350 MB/s)보다 훨씬 빠릅니다. 고압축 모드인 LZ4 HC -9는 압축 속도 40 MB/s, 압축 해제 4800 MB/s로, 압축률은 높지만 압축 속도는 기본 모드보다 느립니다.
설치 방법과 빌드 시스템
LZ4는 C 언어로 작성되어 있으며, make 명령으로 빌드하고 make install로 설치합니다. 이 설치 명령은 루트 권한이 필요할 수 있습니다. Makefile은 표준 규약을 따르며 병렬 빌드(-j#)를 지원합니다. CMake, Meson, Visual Studio 등 다른 빌드 시스템도 build/ 디렉토리에 제공됩니다. vcpkg 의존성 관리자를 통해 설치하는 방법도 있으며, 이 포트는 Microsoft 팀과 커뮤니티 기여자들이 최신 상태로 유지합니다.
라이선스와 사용 전 확인 사항
LZ4 라이브러리는 BSD 2-Clause 라이선스로, lz4 명령줄 유틸리티는 GPL-2.0-or-later 라이선스로 제공됩니다. C 참조 소스 외에도 Java, C#, Python, Perl, Ruby 등 여러 언어로 포팅된 버전이 존재하며, 이 목록은 LZ4 홈페이지에서 관리됩니다. 대부분의 배포판은 패키지 관리자를 통해 liblz4 라이브러리와 lz4 명령줄 인터페이스를 쉽게 설치할 수 있도록 지원합니다. 압축 형식은 블록 형식과 프레임 형식으로 정의되어 있으며, 상호 운용성을 위해 프레임 형식을 준수해야 합니다.