蘋果開源了新的無失真壓縮演算法lzfse,該演算法是去年在ios 9和os x 10.10中引入的。按照蘋果公司的說法,lzfe的壓縮增益和zlib level 5相同,但速度要快2~3倍,能源效率也更高。
lzfse基於lempel-ziv ,並使用了有限狀態熵編碼,後者基於jarek duda在非對稱數字系統(ans)方面所做的熵編碼工作。簡單地講,ans旨在「終結速度和比率的平衡」,既可以用於精確編碼,又可以用於快速編碼,並且具有資料加密功能。使用ans代替更為傳統的huffman和算術編碼方法的壓縮庫越來越多,lzfse就位列其中。
github上提供了lzfse的參考實現。在macos上構建和執行一樣簡單:
$ xcodebuild install dstroot=/tmp/lzfse.dst
如果希望針對當前的ios裝置構建lzfse,可以執行:
xcodebuild -configuration "release" -arch armv7 install dstroot=/tmp/lzfse.dst
除了api文件之外,蘋果去年還提供了乙個示例專案,展示如何使用lzfse 進行塊和流壓縮,這是乙個實用的lzfse入門資源。
lzfse是在谷歌brotli之後發布的,後者在去年開源。與lzfse相比,brotli似乎是針對乙個不同的應用場景進行了優化,比如壓縮靜態web資產和android apk,在這些情況下,壓縮率是最重要的。
***********************************=分割線******************************==
Apple開源新的壓縮演算法LZFSE
蘋果開源了新的無失真壓縮演算法lzfse,該演算法是去年在ios 9和os x 10.10中引入的。按照蘋果公司的說法,lzfe的壓縮增益和zlib level 5相同,但速度要快2 3倍,能源效率也更高。lzfse基於lempel ziv 並使用了有限狀態熵編碼,後者基於jarek duda在非對...
演算法 LZ77壓縮演算法
本人認為lz77演算法其實是字典壓縮的乙個變種,與字典壓縮不同的是,它的字典是動態生成的並且只有乙個,一般選取一定數量的最近壓縮過資料。儲存這些資料的結構叫做滑動視窗,所以lz77有被常稱作滑動視窗演算法。至於這麼生成字典的原因,其實很簡單,因為我們認為乙個要壓縮的字串很有可能與上下文相關,也就是說...
簡單實現LZ77壓縮演算法
因為哈弗曼編碼對於大檔案的壓縮有很大的侷限性 且壓縮比十分有限 所以決定根據lz77演算法寫乙個簡單的壓縮庫 組成因為時間較為緊張 目前完成了最基礎的zip演算法的編寫 即根據lz77演算法 滑動視窗壓縮 先對壓縮檔案得到乙個資料三元組 然後針對數字出現的頻率再進行哈弗曼演算法 為了更好的壓縮比 我...