zlib
gzip
deflate
lzfse
1,zlib和gzip都對deflate進行了封裝,比deflate多了資料頭和尾
1,蘋果開源了新的無失真壓縮演算法 lzfse ,該演算法是去年在ios 9和os x 10.10中 引入 的。按照蘋果公司的說法,lzfe的壓縮增益和zlib level 5相同,但速度要快2~3倍,能源效率也更高。
lzfse基於lempel-ziv
,並使用了 有限狀態熵編碼,後者基於jarek duda在
非對稱數字系統(ans)方面所做的熵編碼工作。簡單地講,ans旨在「終結速度和比率的平衡」,既可以用於精確編碼,又可以用於快速編碼,並且具有資料加密功能。使用ans代替更為傳統的
huffman和 算術編碼方法的壓縮庫 越來越多,lzfse就位列其中。
顯然,lzfse的目標不是成為最好或最快的演算法。事實上,蘋果公司指出,
sdk提供的其他選項要慢乙個數量級。當壓縮率和速度幾乎同等重要,而你又希望降低能源效率時,lzfse是蘋果推薦的選項。
$ 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,在這些情況下,壓縮率是最重要的。
二進位制壓縮 演算法
二進位制壓縮 在程式設計時遇到每個資料只有兩種狀態,且 dfs 或者 bfs 時遍歷時間複雜度高時,可以採用二進位制壓縮資料,尤其是二維陣列。1.二進位制壓縮乙個二位陣列 例如 正常儲存資料回使用二位陣列,1,0,即 0100 0000 0000 0100如果我們採用二進位制壓縮為乙個 int 型別...
二進位制狀態壓縮
二進位制狀態壓縮,即將乙個長度為m的bool陣列用乙個m位的二進位制數來表示和儲存 操作運算 取出整數n在二進位制表示下的第k位 n k 1 取出整數n在二進位制表示下的第0 k 1位 後 k 位 n 1 取出整數n在二進位制表示下的第k位取反 n xor 1 取出整數n在二進位制表示下的第k位賦值...
二進位制演算法
首先是6個二進位制的運算子 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變...