Git DEFLATE/优化的 zlib

标签 git performance optimization zlib deflate

我们在 git 中有一些非常大的存储库,在这些存储库中我们观察到远程/服务器压缩在克隆/pull 时是如何成为瓶颈的。鉴于 git 已经变得如此普遍并且使用了 zlib,这个 zlib 压缩是否得到了优化?

Intel 的一篇论文详细介绍了他们如何在压缩比较小的情况下将 DEFLATE 压缩速度提高约 4 倍:

http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-deflate-compression-paper.pdf

另一篇论文指出,在大多数压缩“级别”(1-9) 的压缩率保持不变的情况下,速度提高了约 1.8 倍:

http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/zlib-compression-whitepaper-copy.pdf

后者的优化似乎在 github 上可用:https://github.com/jtkukunas/zlib

zlib 似乎很老(在这个快节奏的行业中)最新版本是 2013 年 4 月发布的。是否有任何尝试为新一代处理器优化 SIMD zlib?或者除了在 git 中使用 zlib 之外还有其他选择吗?

我知道你可以在 git 中指定一个压缩级别,这会影响速度和压缩率。然而,以上表明可以在不损害压缩率的情况下对 zlib 进行相当大的性能改进。

回顾一下,是否有任何现有的 git 实现使用高度优化的 zlib 或 zlib 替代方案?

PS:似乎很多开发者/服务器会从中受益(甚至是温室气体排放 ;))。

最佳答案

事实上,英特尔对 zlib 的 deflate 做出了贡献,但尚未集成。你可以看看this fork of zlib它有一些 Intel 和 Cloudfare 改进压缩的实验性集成。您可以尝试使用 git 对其进行编译以查看其效果。

zlib 比你想象的要老。大多数压缩代码与 20 年前相比没有太大变化。减压大约在 12 年前被重写。

关于Git DEFLATE/优化的 zlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873479/

相关文章:

git - Git 如何获取分支上的更改

windows - git clean 是否支持移动到回收站?

git - 如何在 Git 中检查一个分支是否是另一个分支的祖先

scala - Spark 中的性能调整

mysql - 使用许多 LEFT JOIN 和 GROUP BY 优化 MySQL 查询

optimization - Symfony-更新多个记录

Mysql查询优化-范围搜索

git - 如何查看git中第一次和第三次提交的区别?

java - android: TCP 连接性能

java - 在 Android 设备上使用 LibGDX 切换屏幕很慢