본문으로 이동

LZFSE

위키백과, 우리 모두의 백과사전.
LZFSE
개발자애플
발표일2015
안정화 버전
lzfse-1.0 / 2017년 5월 8일(9년 전)(2017-05-08)
저장소(영어) lzfse - 깃허브
프로그래밍 언어C
운영 체제macOS, iOS, 리눅스[1]
언어C
종류데이터 압축
라이선스3-clause New BSD 라이선스

LZFSE(Lempel–Ziv Finite State Entropy)는 애플이 만든 오픈 소스 비손실 데이터 압축 알고리즘이다. 더 간단한 알고리즘인 LZVN과 함께 출시되었다.[2]

개요

[편집]

이름은 렘펠-지브유한 상태 엔트로피[3](비대칭 숫자 시스템 구현)의 약어이다. LZFSE는 애플이 2015년 세계 개발자 회의에서 발표했다. 그 해 iOS 9OS X 10.11 출시에 포함되었다.

애플은 LZFSE가 Zlib (DEFLATE)와 비슷한 압축률을 가지면서도 두세 배 더 빠르게 압축을 해제하고 더 적은 리소스를 사용하므로 zlib보다 더 높은 에너지 효율을 제공한다고 주장한다. 압축 해제 속도와 비율을 균등하게 우선시해야 하는 시나리오를 목표로 했다.[3] 이러한 에너지 효율의 일부는 최신 마이크로아키텍처, 특히 ARM64에 맞게 알고리즘을 최적화함으로써 달성되었다.[4] 타사 벤치마킹에 따르면 LZFSE가 zlib보다 압축 해제 속도가 빠르지만, 다른 많은 최신 압축 알고리즘이 밀도, 압축 속도 및 압축 해제 속도와 같은 더 유리한 압축 알고리즘 성능 특성을 상당한 차이로 가질 수 있음을 시사한다.[5]

스쿼시 벤치마크에 따르면 LZFSE는 Zstd (레벨 6)와 속도가 비슷하지만 비율은 약간 나쁘다. LZVN은 LZ4 레벨 4와 속도가 비슷하지만 비율도 약간 나쁘다.[6] LZFSE와 LZVN 모두 런타임에 튜닝할 수 없지만, 일반적인 속도-비율 절충을 위해 컴파일 시간에 몇 가지 상수를 조정할 수 있다.[7]

구현

[편집]

에릭 바인빌이 작성한 참조 C 라이브러리는 2016년 WWDC 이후 3-절 BSD 라이선스로 공개되었다. 여기에는 LZFSE 스트림을 압축하고 해제하는 실행 파일도 포함된다. LZVN API를 노출할 계획은 없다.[1]

애플의 LZFSE 구현은 입력이 LZFSE_ENCODE_LZVN_THRESHOLD (4096 바이트)보다 작을 때 LZVN이라는 더 간단한 알고리즘을 사용한다. 이는 엔트로피 부호화 없이 세 가지 너비의 REP (L,M,D) 패킷을 사용하는 LZSS 유형 알고리즘이다. 오픈 소스 참조 구현에서 애플은 LZFSE가 작은 크기에서 제대로 작동하지 않으므로 대신 LZVN을 사용한다고 설명한다.[7] libfastCompression.a의 이 알고리즘은 이전에 Mac OS X 요세미티 개발자 프리뷰 1 (2014)에서 기본 커널캐시 압축 방식으로 발견되었으며, 하루히코 오쿠무라의 기존 lzss 압축을 대체했다.[8]

사용법

[편집]

HFS 플러스애플 파일 시스템의 준투명 압축 메커니즘인 AppleFSCompression.framework (AFSC)는 OS X 10.9 이후 LZFSE 및 LZVN을 지원한다.

애플의 디스크 이미지 프레임워크는 Mac OS X 10.11 이후 ULFO라는 LZFSE 기반 인코딩을 제공하며,[9] hdiutil(1)[10] 및 일부 타사 이미지 유틸리티를 통해 접근할 수 있다.

애플은 2017년 macOS 하이 시에라에서 애플 아카이브 형식과 관련 API를 도입했다.[11] 확장자명은 .aar (틀:MacOS 빅서 이후, 이전에는 .yaa)이다. 암호화는 macOS 몬터레이에서 도입되었으며, 이때 AA는 기본 아카이브 유틸리티 형식이 되었다. macOS에는 AA 파일을 처리하는 세 가지 명령줄 유틸리티가 제공된다.[12][13] 타사 프로그램 중 Keka는 시스템 API를 사용하여 AA 파일을 처리할 수 있지만, 다른 시스템에는 독립적인 구현이 존재하지 않는다.[14]

같이 보기

[편집]

각주

[편집]
  1. 1 2 Bainville, Eric (2016년 6월 7일). LZFSE compression library and command line tool. GitHub. 2016년 7월 4일에 확인함.
  2. Apple Inc. Data Compression - Compression | Apple Developer Documentation (영어). developer.apple.com. 2017년 4월 7일에 확인함.
  3. 1 2 De Simone, Sergio. Apple Open-Sources its New Compression Algorithm LZFSE. infoq. 2016년 7월 7일에 확인함.
  4. Apple Inc. (2015년 6월 12일). Low Energy, High Performance: Compression and Accelerate – WWDC 2015 – Apple Developer Videos (영어). developer.apple.com. 2017년 3월 5일에 확인함. pdf 보관됨 2016-04-18 - 웨이백 머신
  5. Compression Benchmark. 2018년 8월 10일에 확인함.
  6. Squash Compression Benchmark. GitHub. Squash. 2019년 12월 25일에 확인함.
  7. 1 2 lzfse_tunables.h. GitHub. 2019년 12월 18일. 2019년 12월 22일에 확인함.
  8. Piker-Alpha (2014년 6월 4일). OS X 10.10 Yosemite DP1 kernel(cache) (영어). Pike's Universum. 2019년 12월 22일에 확인함.
  9. Tsai, Michael (2015년 10월 7일). LZFSE Disk Images in El Capitan. 2017년 4월 9일에 원본 문서에서 보존된 문서. 2022년 4월 15일에 확인함.
  10. hdiutil(1) mojave man page. 2022년 4월 15일에 확인함.
  11. Apple Archive (영어). Apple Developer Documentation.
  12. Inside Apple Archive: more than a compression format (영어). The Eclectic Light Company. 2022년 5월 10일.
  13. AA(1): Manipulate Apple Archives. keith.github.io.
  14. AppleArchive support · Issue #829 · aonez/Keka (영어). GitHub.
  15. compression_algorithm. Apple Developer Documentation. Apple Inc. 2019년 8월 11일에 확인함.

외부 링크

[편집]