Developer(s) | Apple |
---|---|
Initial release | 2015 |
Stable release | |
Repository | lzfse on GitHub |
Written in | C |
Operating system | macOS, iOS, Linux[1] |
Available in | C |
Type | Data compression |
License | 3-clause New BSD License |
- LZFSE is Apple’s proprietary compression algorithm, matching the compression ratio of zlib level 5, but with much higher energy efficiency and speed (between 2x and 3x) for both encode and decode operations. Use LZFSE when compressing a payload for iOS, macOS, watchOS, and tvOS. If you need to compress a payload for another platform (for.
- Convert DMG to ISO and Make Bootable USB from ISO. Since Windows doesn't offer native support.
Lossless data compression library with a compression ratio similar to LZMA but with much faster decompression.
LZFSE (Lempel–Ziv Finite State Entropy) is an open sourcelossless data compressionalgorithm created by Apple Inc. It was released with a simpler algorithm called LZVN.[2]
Overview[edit]
The name is an acronym for Lempel-Ziv and Finite State Entropy[3] (implementation of asymmetric numeral systems).LZFSE was introduced by Apple at its Worldwide Developer Conference 2015. It shipped with that year's iOS 9 and OS X 10.11 releases.
Dmg Files With Lzfse Compression
Apple claims that LZFSE compresses with a ratio comparable to that of zlib (DEFLATE) and decompresses two to three times faster while using fewer resources, therefore offering higher efficiency than zlib. It was aimed for scenarios where decompression speed and rate should be prioritised equally.[3] Part of this efficiency was achieved by optimising the algorithm for modern micro-architectures, specifically focusing on arm64.[4] Third-party benchmarking confirms that LZFSE decompresses faster than zlib, but also suggests that many other modern compression algorithms may have more favorable compression algorithm performance characteristics such as density, compression speed and decompression speed by a significant margin.[5]
Apple's LZFSE implementation uses a simpler algorithm called LZVN when the input is smaller than LZFSE_ENCODE_LZVN_THRESHOLD
(4096 bytes). This is a LZSS-type algorithm without entropy encoding but with three widths of REP (L,M,D) packets. In the open source reference implementation, Apple explains that LZFSE does not perform as well for small sizes, so LZVN is used instead.[6] This algorithm in libfastCompression.a was discovered earlier as the default kernelcache compression method in Mac OS X Yosemite Developer Preview 1 (2014), replacing the legacy lzss
compression from Haruhiko Okumura.[7]
According to the Squash Benchmark, LZFSE is similar in speed to ZSTD (level 6), but has a slightly worse ratio. LZVN is similar in speed to LZ4 level 4, with a slightly worse ratio as well.[8] Neither LZFSE nor LZVN is tunable at runtime, although a few constants can be tweaked at compile time for the usual speed-ratio trade-off.[6]
Implementation[edit]
A reference Clibrary written by Eric Bainville was made available under the 3-clause BSD License after WWDC 2016. It includes an executable to compress and decompress LZFSE streams as well. There are no plans to expose an LZVN API.[1]
AppleFSCompression.framework (AFSC), the mechanism for quasi-transparent compression in HFS Plus and Apple File System, supports LZFSE and LZVN since OS X 10.9.
See also[edit]
- Zstandard – another combination of LZ77 and FSE, by Yann Collet, the FSE author
- LZ4 compression algorithm – a fast member of the LZ77 family, also available on Apple platforms[9]
Dmg Files With Lzfse Compression Files
References[edit]
- ^ abBainville, Eric (2016-06-07). 'LZFSE compression library and command line tool'. GitHub. Retrieved 2016-07-04.CS1 maint: discouraged parameter (link)
- ^Apple Inc. 'Data Compression - Compression | Apple Developer Documentation'. developer.apple.com. Retrieved 2017-04-07.
- ^ abDe Simone, Sergio. 'Apple Open-Sources its New Compression Algorithm LZFSE'. infoq. Retrieved 2016-07-07.CS1 maint: discouraged parameter (link)
- ^Apple Inc. (2015-06-12). 'Low Energy, High Performance: Compression and Accelerate - WWDC 2015 - Apple Developer Videos'. developer.apple.com. Retrieved 2017-03-05.pdf
- ^'Compression Benchmark'. Retrieved 2018-08-10.CS1 maint: discouraged parameter (link)
- ^ ab'lzfse_tunables.h'. GitHub. 18 December 2019. Retrieved 22 December 2019.CS1 maint: discouraged parameter (link)
- ^Piker-Alpha (4 June 2014). 'OS X 10.10 Yosemite DP1 kernel(cache)'. Pike's Universum. Retrieved 22 December 2019.CS1 maint: discouraged parameter (link)
- ^'Squash Compression Benchmark'. GitHub. Squash. Retrieved 25 December 2019.CS1 maint: discouraged parameter (link)
- ^'compression_algorithm'. Apple Developer Documentation. Apple Inc. Retrieved 2019-08-11.
External links[edit]
- lzfse on GitHub
- Finite State Entropy by Yann Collet (Cyan4973), the source of the FSE implementation in LZFSE
- Discussion on Encode.su, from which the maintainer Eric Bainville has taken suggestions