| 개발자 | 애플 |
|---|---|
| 발표일 | 2015 |
| 안정화 버전 | lzfse-1.0
/ 2017년 5월 8일 |
| 저장소 | (영어) lzfse - 깃허브 |
| 프로그래밍 언어 | C |
| 운영 체제 | macOS, iOS, 리눅스 |
| 언어 | C |
| 종류 | 데이터 압축 |
| 라이선스 | 3-clause New BSD 라이선스 |
LZFSE(Lempel–Ziv Finite State Entropy)는 애플이 만든 오픈 소스 비손실 데이터 압축 알고리즘이다. 더 간단한 알고리즘인 LZVN과 함께 출시되었다.
이름은 렘펠-지브와 유한 상태 엔트로피(비대칭 숫자 시스템 구현)의 약어이다. LZFSE는 애플이 2015년 세계 개발자 회의에서 발표했다. 그 해 iOS 9와 OS X 10.11 출시에 포함되었다.
애플은 LZFSE가 Zlib (DEFLATE)와 비슷한 압축률을 가지면서도 두세 배 더 빠르게 압축을 해제하고 더 적은 리소스를 사용하므로 zlib보다 더 높은 에너지 효율을 제공한다고 주장한다. 압축 해제 속도와 비율을 균등하게 우선시해야 하는 시나리오를 목표로 했다. 이러한 에너지 효율의 일부는 최신 마이크로아키텍처, 특히 ARM64에 맞게 알고리즘을 최적화함으로써 달성되었다. 타사 벤치마킹에 따르면 LZFSE가 zlib보다 압축 해제 속도가 빠르지만, 다른 많은 최신 압축 알고리즘이 밀도, 압축 속도 및 압축 해제 속도와 같은 더 유리한 압축 알고리즘 성능 특성을 상당한 차이로 가질 수 있음을 시사한다.
스쿼시 벤치마크에 따르면 LZFSE는 Zstd (레벨 6)와 속도가 비슷하지만 비율은 약간 나쁘다. LZVN은 LZ4 레벨 4와 속도가 비슷하지만 비율도 약간 나쁘다. LZFSE와 LZVN 모두 런타임에 튜닝할 수 없지만, 일반적인 속도-비율 절충을 위해 컴파일 시간에 몇 가지 상수를 조정할 수 있다.
에릭 바인빌이 작성한 참조 C 라이브러리는 2016년 WWDC 이후 3-절 BSD 라이선스로 공개되었다. 여기에는 LZFSE 스트림을 압축하고 해제하는 실행 파일도 포함된다. LZVN API를 노출할 계획은 없다.
애플의 LZFSE 구현은 입력이 LZFSE_ENCODE_LZVN_THRESHOLD (4096 바이트)보다 작을 때 LZVN이라는 더 간단한 알고리즘을 사용한다. 이는 엔트로피 부호화 없이 세 가지 너비의 REP (L,M,D) 패킷을 사용하는 LZSS 유형 알고리즘이다. 오픈 소스 참조 구현에서 애플은 LZFSE가 작은 크기에서 제대로 작동하지 않으므로 대신 LZVN을 사용한다고 설명한다. libfastCompression.a의 이 알고리즘은 이전에 Mac OS X 요세미티 개발자 프리뷰 1 (2014)에서 기본 커널캐시 압축 방식으로 발견되었으며, 하루히코 오쿠무라의 기존 lzss 압축을 대체했다.
HFS 플러스 및 애플 파일 시스템의 준투명 압축 메커니즘인 AppleFSCompression.framework (AFSC)는 OS X 10.9 이후 LZFSE 및 LZVN을 지원한다.
애플의 디스크 이미지 프레임워크는 Mac OS X 10.11 이후 ULFO라는 LZFSE 기반 인코딩을 제공하며, hdiutil(1) 및 일부 타사 이미지 유틸리티를 통해 접근할 수 있다.
애플은 2017년 macOS 하이 시에라에서 애플 아카이브 형식과 관련 API를 도입했다. 확장자명은 .aar (틀:MacOS 빅서 이후, 이전에는 .yaa)이다. 암호화는 macOS 몬터레이에서 도입되었으며, 이때 AA는 기본 아카이브 유틸리티 형식이 되었다. macOS에는 AA 파일을 처리하는 세 가지 명령줄 유틸리티가 제공된다. 타사 프로그램 중 Keka는 시스템 API를 사용하여 AA 파일을 처리할 수 있지만, 다른 시스템에는 독립적인 구현이 존재하지 않는다.