周三下午,一個名為 misa77 的項目悄然出現在 Hacker News 的 Show 版塊。發布者貼出了一組讓人眼前一亮的數字:解壓速度是 LZ4 的兩倍,同時壓縮率還更好一點。但緊接著的說明又潑了盆冷水——壓縮過程慢得令人發指。這究竟是一個實用工具,還是又一個“為解壓而生”的實驗品?
misa77 是一款基于 LZ 算法的編解碼器,專門瞄準“一次寫入、多次讀取”的場景。它的設計目標非常明確,甚至有點偏執:極致單線程解壓吞吐量、過得去的壓縮率,以及不隨輸入大小變化的恒定內存占用(壓縮時不超過 5 MB,解壓時甚至為 0 MB)。為了達成這三個目標,壓縮速度被毫不猶豫地犧牲了。發布者用“緩慢壓縮是顯而易見的代價”來形容這一點,語氣里沒有半分掩飾。
![]()
從已公布的數據來看,misa77 的解壓性能有幾個反直覺的特點:
第一,對于高可壓縮性的文件,解壓吞吐量尤其突出。也就是說,數據本身越容易壓縮,misa77 解壓起來反而越快。這和通常“壓縮越狠解壓越慢”的認知正好擰著來。
第二,即便是中等可壓縮性的文件,只要在壓縮時多花些時間,得到的壓縮流不僅更小,解壓速度也會更快。這相當于把計算成本從解壓端徹底移到了壓縮端,并且兩者還能形成正向疊加:比率提升的同時,吞吐量不降反升。
這種特性催生了一些實驗性壓縮模式,這些模式會在壓縮階段投入更多計算資源,生成對大多數 CPU 微架構更友好的壓縮流,從而在解壓時跑出更好的成績。相關代碼存放于倉庫的 src/experimental/ 目錄下。
![]()
v0.2.0 版本提供兩個壓縮級別。級別 0 進一步提升解壓吞吐量,但壓縮率稍差,編碼速度與級別 1 相近。級別 1 是默認模式,犧牲一點解壓速度換來更好的壓縮率,編碼速度幾乎不變。選擇哪個級別,完全取決于你的場景是讀密集型,還是對存儲成本更敏感。
基準測試結果更直接。在對 Silesia Corpus 的測試中,misa77 的解壓吞吐量與壓縮率之間的帕累托前沿幾乎由它自己獨享。多數競爭對手即便擁有明顯更差的壓縮率,解壓速度也追不上它。唯一的短板毫無爭議:壓縮速度墊底。在 Intel i7-14650HX 處理器、單線程綁定性能核、禁用睿頻、CPU 調度策略設為 performance 的環境下,misa77 的表現被逐文件拆解,數據波動極大。有的文件上它一騎絕塵,有的文件上優勢收窄,但始終沒掉出第一梯隊。
容器格式細節和庫函數所用的流格式文檔已放在 docs/ 目錄,感興趣的人可以直接查閱。至于 v0.1.0 時代橫跨 Intel x86-64、AMD x86-64 和 ARM64 的跨平臺結果,發布者委婉地提醒了一句“你讀到的時候可能已經過時了”。
misa77 的出現,像是給“寫一次讀多次”場景遞了一把極端的工具。如果你的工作負載是日志歸檔、容器鏡像分發、或任何解壓遠多于壓縮的業務,那么用幾個小時的壓縮時間換來后續每一次毫秒級的解壓提速,這筆賬或許算得過來。但要是需要頻繁壓縮,那還是離它遠點比較好。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.