近日,Facebook开源了新的压缩算法Zstandard 1.0。据Facebook工程师Yann Collet和Chip Turner介绍,该算法是少数能够在性能和效率方面超过zlib的压缩算法之一,而后者当前是“占统治地位的标准”。Facebook Zstandard利用了Collet之前所做的工作。Collet是LZ4的作者,他在2015年发布了其新算法的第一个版本。

Facebook的基准测试显示,在任意压缩率和压缩带宽组合下,Zstandard的性能都要高于zlib。

特别地,当使用标准无损压缩语料库Silesia时,相比zlib,Zstandard展示了出色的性能:

  • 在压缩率相同的情况下,它的速度快大约3到5倍;

  • 在压缩速度相同的情况下,它生成的文件小10%到15%;

  • 不管压缩率多大,它解压缩的速度都要快2倍;

  • 它的最大压缩率要高许多(大约为4比3.15)。

Zstandard使用了有限状态熵,并以Jarek Duda在熵编码非对称数字系统(ANS)方面的工作为基础。ANS的目标是“避免在压缩速度和压缩率之间进行取舍”,它既可以用于精确编码,也可以用于快速编码,并且支持数据加密。但是,从根本上讲,Zstandard之所以提供了更好的性能是因为它的多项设计和实现选择。

  • zlib受一个32KB的窗口限制,而Zstandard并没有任何固有的限制,它可以更充分地利用现代环境中的内存,包括移动和嵌入式环境。

  • 一个新的Huffman解码器Huff0。它可以借助多个ALU并行解码符号,减少算术操作之间的依赖。

  • Zstandard设法尽量减少分支,从而将因为分支预测错误而导致的、开销很高的管道清理最小化。下面的例子展示了如何在不使用分支的情况下重写while循环:

  • 对于差别只有几个字节的序列,重复码建模极大地改善了压缩。

Zstandard是使用C语言编写的。它既是一个命令行工具,也是一个库。它提供了20多个压缩级别,让用户可以根据具体可用的硬件、待压缩的数据和待优化的瓶颈进行仔细地调整。Facebook建议开始时使用默认级别3。该级别适合大多数情况。然后,可以尝试9以下的级别,合理地平衡速度和空间,或者使用更高的级别获得更高的压缩率,而20以上的级别则适合那些你不关心压缩速度的情况。

对于Zstandard的未来版本会带来什么特性,Collet和Turner也提供了一些信息,其中包括支持多线程,以及可以提供更快压缩速度和更高压缩率的新的压缩级别。

Zstandard是继苹果的ZLFSE和谷歌的Brotli之后的又一个开源压缩算法。ZLFSE和Brotli都是开源的,每一种算法都针对特定的应用场景进行了优化:Brotli似乎为实现Web资产和Android APK的高压缩率进行了优化,而LZFSE的目标是,在压缩率相同的情况下,提供比zlib更快的压缩速度和更低的电量消耗。

-END-

欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。

  • 长按下方的二维码可以快速关注我们

  • 如想加群讨论学习,请点击右下角的“加群学习”菜单入群

Facebook开源新的压缩算法,性能超zlib相关推荐

  1. Facebook开源新NLP框架:简化部署流程,大规模应用也OK

    铜灵 编译整理 量子位 出品 | 公众号 QbitAI 今天,Facebook开源了一个基于PyTorch的深度学习库PyText,想容易地构建和部署NLP系统. Facebook在博客中介绍说,新框 ...

  2. 突发!Facebook一员工在公司总部跳楼身亡,传是程序员;微软开源新字体Cascadia Code;华为下一个研究前沿是AI...

    0.突发!Facebook 一程序员在公司总部跳楼身亡 据新浪科技援引外媒报道,一位 Facebook 员工从加州门洛帕克(Menlo Park)总部四楼纵身跳下,结束年轻的生命. Facebook ...

  3. 文心一言独立APP支持语音/ 知乎限制AI生成回答/ AMD新掌机芯片性能超NS二十倍...今日更多新鲜事在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是4月26日星期三,离五一不远了,大家安排好假期怎么过了吗? 如果不打算出门,也可以利用这个时间研究一下最新的AI工具. 今日科技圈 ...

  4. facebook 开源_Facebook和Google的新消息,CPTPP的潜在开源影响以及更多新闻

    facebook 开源 在本期开放源代码新闻摘要中,我们将介绍来自Facebook和Google的新开放源代码,CPTPP危害开放源代码,开放源代码流量管理等的潜力. Facebook和Google发 ...

  5. Facebook 开源聊天机器人Blender,经94 亿个参数强化训练,更具“人情味”

    来源:AI前线 作者 | Kyle Wiggers 编译 | Sambodhi 策划 & 编辑 | 刘燕 不久前,Facebook 开源了号称是全球最强大的聊天机器人 Blender,它标志着 ...

  6. Facebook开源内存数据库Beringei,追求极致压缩率

    2017年2月3日,Facebook宣布将开源他们的高性能时序数据存储引擎Beringer.Beringei是用来解决其内部监控数据存储和查询需求的数据库,其特点是读写速度快,属于内存数据库的一种.本 ...

  7. Facebook开源NLP建模框架PyText,从论文到产品部署只需数天

    选自code.fb 作者:AHMED ALY HEGAZY.CHRISTOPHER DEWAN 机器之心编译 参与:淑婷.张倩 Facebook AI Research(FAIR)今天宣布推出 PyT ...

  8. 利用Facebook开源项目来赚钱不再只是梦

     利用Facebook开源项目来赚钱不再只是梦 Facebook是一家很热爱分享的社交企业,和Google可以说是企业开源行列里的两架马车.Facebook开源项目的消息也不绝于耳,很多企业也利用 ...

  9. 【机器学习】FaceBook开源全网第一个时序王器--Kats。

    作者:杰少 时间序列王器-Kats 简介 时间序列分析建模是数据科学和机器学习的一个重要的领域,在电子商务.金融.供应链管理.医学.气象.能源.天文等诸多领域有着广泛的应用.而对于时间序列的分析以及建 ...

  10. Facebook 开源增强版 LASER,可使用90多种语言

    为了加速将自然语言处理(NLP)应用到更多的语言,Facebook 开源了增强版 LASER 库,成为第一个成功地与 NLP 社区分享的大型多语种句子表示工具.该工具目前可以使用90多种语言,涉及28 ...

最新文章

  1. 罗辑思维在全链路压测方面的实践和工作笔记
  2. Win7 MongoDB可视化工具Robo 3T 1.2.1(robomongo)的安装使用
  3. 工具推荐:22款最流行的计算机取证工具【2017年更新版】
  4. NYOJ 275 队花的烦恼一
  5. 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历
  6. 文献学习(part32)--Density Peak Clustering Based on Relative Density Optimization
  7. angular-ui-tab-scroll
  8. 看了本书《答案在你心中》里面的很多问题都蛮有意思!!!
  9. 测试方案和测试计划的区别
  10. 黑马程序员-Map集合
  11. 在Linux-0.11中实现基于内核栈切换的进程切换
  12. iOS 初始化(init、initWithNibName、initWithCoder、initWithFrame)
  13. MVC3学习 七 Razor使用、路由模块、框架自带校验
  14. iOS swift 建立桥接文件及更改位置
  15. 科研_研究生学术论文写作方法
  16. C++_Hash容器总结
  17. count(*),count(1)和count(字段)的区别
  18. 现代控制理论 之 LQR控制
  19. C语言if 语句的基本用法
  20. 机器学习实战之信用卡诈骗(一)

热门文章

  1. 【转】HTTP请求中的form data和request payload的区别
  2. 《教孩子学编程(Python语言版)》——1.3 运行Python程序
  3. UI自动化测试篇 :ReportNG替代TestNG自带html版测试报告初探
  4. 前端学习/资源/工具网站
  5. Javascript 笔记与总结(1-3)arguments
  6. 《JQuery 能干点啥~》第四讲 html() 与 text()的赋值比较
  7. 如何通过 Mac 使用 AirPods 收听?
  8. Xcode之developer tools access
  9. 用“无线诊断”工具解决 Mac 出现的 WiFi 连接问题
  10. keepalived 非抢占模式