ZXC, 압축 해제 속도 40% 향상! 게임, 임베디드 시스템에 최적화

by DD
4개월 전
조회수 16

ZXC는 압축 해제 속도 극대화에 초점을 맞춘 고성능 무손실 압축 라이브러리임

Apple Silicon, Cloud ARM 환경에서 LZ4 대비 40% 이상 빠른 압축 해제 속도를 보임

'Write Once, Read Many' 환경에 최적화되어 게임 에셋, 펌웨어, 앱 번들 등에 적합함

개발자는 GitHub Actions을 통해 다양한 환경에서 벤치마크 결과를 확인할 수 있음

ZXC의 비대칭 압축 방식

ZXC는 'Write Once, Read Many' 환경에 최적화된 비대칭 압축 방식을 채택하여, 압축 속도보다 압축 해제 속도(Decompression Throughput)에 집중한다. 특히, 인코더(Encoder)는 압축 해제 속도를 극대화하기 위해 복잡한 연산을 수행하며, 현대 CPU의 명령어 파이프라인(Instruction Pipelining)분기 예측(Branch Prediction) 기능을 활용하도록 비트스트림을 구성한다. 이러한 설계는 게임 에셋, 펌웨어, 앱 번들과 같이 한 번 압축 후 여러 번 해제되는 환경에서 유리하다.

Apple Silicon 및 ARM 환경에서의 성능 우위

ZXC는 Apple Silicon(M2) 환경에서 LZ4 대비 최대 1.98배, Google Axion(ARM Neoverse V2) 환경에서 최대 1.68배 빠른 압축 해제 속도를 보이며, x86_64 환경에서도 5% 이상의 성능 향상을 제공한다. 이러한 성능 향상은 ZXC가 ARMv8 아키텍처를 포함한 최신 CPU의 특성을 적극적으로 활용한 결과이다. LZBench를 통해 다양한 환경에서 벤치마크 결과를 확인할 수 있으며, 특히 게임 에셋 로딩(Game Assets Loading)앱 시작 시간(App Startup Time) 단축에 기여할 수 있다.

ZXC의 기술적 특징 및 API

ZXC는 단일 스레드 API(Single-Threaded API)멀티 스레드 스트리밍 API(Multi-Threaded Streaming API)를 모두 제공하여, 다양한 사용 사례에 대응한다. 단일 스레드 API는 작은 에셋이나 간단한 통합에 적합하며, 멀티 스레드 API는 대용량 파일의 병렬 처리를 지원한다. 또한, ZXC는 BSD 3-Clause License 하에 배포되며, ClusterFuzzLite를 이용한 지속적인 퍼징(Fuzzing) 및 CPPChecker, Clang Static Analyzer를 통한 정적 분석을 통해 안전성을 확보한다.

압축 레벨 및 사용 사례

ZXC는 압축 속도와 압축률 간의 균형을 조절하기 위해 다양한 압축 레벨을 제공한다. 레벨 1, 2는 실시간 에셋(Real-time Assets)에 최적화되어 LZ4와 유사한 압축률을 유지하면서 40% 더 빠른 로딩 속도를 제공한다. 레벨 3, 4는 효율적인 압축 속도와 LZ4보다 우수한 압축률을 제공하며, 레벨 5는 임베디드 시스템(Embedded Systems), 펌웨어, 아카이빙에 적합하다. CLI 및 API를 통해 쉽게 사용할 수 있으며, GitHub Releases에서 바이너리를 다운로드하거나 소스 코드를 빌드할 수 있다.

ZXC: another (too) fast decompressor