2016-11-15 25 views
3

Facebook上創建一個開源的快速無損壓縮算法,在zlib的層次和更好的壓縮比定位於實時壓縮的方案,稱爲ZStandard迅速包裝一個類似Facebook的ZStandard的圖書館?

zstd

我一直在尋找一個描述C到迅速包裹,像this,但看起來不夠全面的教程,有什麼prerequests我必須知道寫一個包裝過嗎?

  • 當我寫完它時,我也將它作爲開源代碼。

回答

3

感謝您一個很好的問題。我已經看過圖書館並玩過它,看起來很有趣。

我會說你需要使用ZSTD C庫在C程序要舒適。您還需要在Swift中進行舒適的編程。根據要包裝的API的部分,您可能需要了解如何處理Swift中的原始內存(Unsafe...類型)。

一些挑戰,包裝ZSTD時需要考慮:

  • 使用詞典的流API是實驗性的,並受到 變化,但使用字典是ZSTD的優勢之一。
  • 當內存緩衝處理,我們希望儘量減少複製它們, 因爲緩衝區可能相當大,並複製它們會嚴重 影響性能。這當然會讓內存管理變得複雜。

在編寫包裝時,您可以選擇多種方法。例如,你可以在C中編寫包裝器,它將展示你將在Swift中包裝的簡單API。您可以在包裝框架中包含C代碼,也可以將其保存在單獨的C庫中。

我想出了周圍的API的一小部分的包裝的一個簡單的例子,你可以看看https://github.com/omniprog/SwiftZSTD