핵심 요약
- 게임 에셋, 펌웨어 등 '한 번 압축하고 수없이 읽는' 환경을 위해 디코딩 속도를 극대화한 무손실 압축 라이브러리 ZXC가 공개되었습니다.
- 압축 시점에 연산 작업을 몰아주는 비대칭 방식을 통해 모든 압축 레벨에서 기존 강자인 LZ4보다 더 작게 압축하면서도 최대 2배 이상 빠른 해제 속도를 보여줍니다.
- C 언어로 작성된 BSD 라이선스 오픈소스이며 러스트, 파이썬, Node.js, Go 등 다양한 언어 바인딩을 기본 지원합니다.
요약 한 번 압축해 두고 수없이 해제해 쓰는 데이터에 최적화된 새로운 무손실 압축 라이브러리 'ZXC(libzxc)'가 공개되어 개발자 커뮤니티의 관심을 모으고 있습니다.
ZXC는 펌웨어 이미지, 게임 리소스 에셋, 앱 번들 패키징 등 배포 환경을 겨냥해 설계되었습니다. 기존의 널리 쓰이는 LZ4 라이브러리는 압축과 해제 속도가 비슷한 대칭 구조라 로그 수집이나 스왑 메모리 등에는 알맞지만, 빌드 서버에서 한 번 압축한 뒤 수많은 사용자 기기에서 풀어서 써야 하는 소프트웨어 배포 환경에는 적합하지 않았습니다. 배포 서버에서 아무리 압축 시간을 단축해도 클라이언트 기기에는 이득이 없기 때문입니다.
ZXC는 이러한 작업 부담을 압축기(인코더) 쪽에 대폭 몰아주는 방식을 택했습니다. 매칭 탐색, 최적 파싱, 통계 튜닝을 인코딩 단계에서 최대한 처리하고, 비트스트림 구조 자체를 최신 CPU의 파이프라인과 분기 예측에 맞게 배치했습니다. 그 덕분에 디코더는 불필요한 분기를 줄이고 SIMD 명령어를 적극 활용해 압축 해제 속도를 극대화했습니다.
벤치마크 테스트 결과에 따르면 모든 압축 레벨(1~7)에서 ZXC는 LZ4보다 동일하거나 더 작은 파일 크기를 유지하면서도 해제 속도는 앞섰습니다. 애플 M2 칩 기준 레벨 1에서는 초당 13.5GB라는 경이적인 해제 속도를 기록하며 LZ4 대비 2.4배 빠른 속도를 보였고, 기본값인 레벨 3에서도 초당 9.7GB 수준으로 2배 빠른 해제 속도를 기록했습니다. 가장 높은 압축률인 레벨 7에서도 zstd -1보다 작은 용량에 2.8배 빠른 속도를 달성했습니다.
또한 아카이브 내 원하는 블록을 O(1) 시간 복잡도로 즉시 읽어오는 시크(Seek) 테이블, 메모리 추가 할당 없이 약 1%의 오버헤드만으로 버퍼 내에서 직접 푸는 인-플레이스(In-place) 해제, 훈련된 딕셔너리 지원 등 실무 배포 및 게임 로딩 시간 단축에 유용한 기능들을 두루 갖추고 있습니다. C17 기반에 외부 의존성이 없으며 BSD 3-Clause 라이선스로 공개되었습니다.
Sponsored · 광고