ZXC
콘텐츠 전송에 최적화된 고성능 비대칭 무손실 압축 라이브러리
About
- 콘텐츠 전송과 임베디드 시스템의 읽기 성능 병목을 해결하기 위해 설계
- 한 번 압축하고 여러 번 해제(Read-Many) 하는 구조에 맞춰, 인코더가 복잡도를 담당하고 디코더는 최대 처리량을 확보
- LZ4 대비 디코딩 속도 40% 이상 향상(애플 실리콘) , 20% 이상 향상 (클라우드용 ARM칩인 Google Axion) , x86_64에서도 5% 이상 향상
- lzbench 마스터 브랜치에 공식 통합되어, 이제 표준 벤치마크로 독립 검증 가능
- 기존 코덱의 대칭 속도(LZ4) 와 압축 효율(Zstd) 간 절충 문제를 해결하는 비대칭 효율성(Asymmetric Efficiency) 중심 설계
- 인코더는 명령 파이프라인 및 분기 예측 최적화를 위해 CPU 구조(특히 ARMv8)에 맞춘 비트스트림 생성
- 디코더는 단순화되어 런타임 처리량 극대화
- Apple M2 기준, ZXC는 LZ4 대비 최대 1.9배 빠른 디코딩, Zstd 대비 2.7배 빠른 처리량
- Google Axion(ARM Neoverse V2)에서도 1.6~2.5배 빠른 해제 속도 유지
- x86_64(AMD EPYC) 환경에서도 최대 2.2배 빠른 디코딩 성능 확보
- Level 1–2(빠름): 게임/UI등 실시간 애셋용, LZ4보다 약 40% 빠른 로딩
- Level 3–4(균형): 속도와 비율의 균형
- Level 5(컴팩트): 펌웨어·임베디드용, Zstd보다 빠르고 LZ4보다 높은 압축률
- CLI: 애셋 수동 압축·벤치마크용 명령 제공 (zxc -z, zxc -d, zxc -b)
- API: 완전한 스레드 세이프(stateless) 구조로 바인딩에 친화된 API 제공
- 스트리밍 API: 대용량 파일 병렬 처리 지원, 자동 스레드 감지 및 체크섬 검증 포함
- Sans-IO 구조로 설계되어, 언어별 I/O 드라이버를 직접 구현 가능 (zxc_sans_io.h 기반)
- 지속적 퍼징(ClusterFuzzLite)
- 정적 분석(CPPChecker, Clang)
- 동적 검증(Valgrind, ASan/UBSan)
- 모든 연산에서 명시적 버퍼 용량 지정을 요구하는 안전한 API 구조