【发布时间】:2011-03-14 06:44:15
【问题描述】:
是否存在任何性能基准?
我希望创建一个 repo 并提交/推送运行多个 gig 的遗留代码。
是更快/足迹等吗?
如果这太模糊了,我很抱歉......
【问题讨论】:
标签: performance git mercurial benchmarking dvcs
是否存在任何性能基准?
我希望创建一个 repo 并提交/推送运行多个 gig 的遗留代码。
是更快/足迹等吗?
如果这太模糊了,我很抱歉......
【问题讨论】:
标签: performance git mercurial benchmarking dvcs
您不会因为性能而在 git 和 mercurial 之间进行选择。两个都不错。
只需做您将要做的事情并进行衡量即可。您可能会在第一次导入时获得最大的性能变化——这并不重要。继续挖掘。
在空间方面,git 肯定会获胜的一个地方是,如果您在其生命周期中的许多不同路径中拥有相同的内容。也就是说,如果您的几个文件被移动。 git 的模型比 hg 的模型更支持这一点。这对你来说可能并不重要。
在这两种情况下,您都应该考虑您的几个存储库是否实际上代表了单个项目的源代码。
但同样,由于原始性能,在这两个相似且活跃的项目之间进行选择是不明智的。
最近(2011 年 1 月)在 Mercurial and Git server performance 之间进行了性能比较。结论是 Mercurial 的性能比 Git 更稳定,但 Git 平均速度更快。
【讨论】:
原始答案(2011 年 3 月,GitHub 不到 3 年)
衡量 DVCS(无论如何都在本地执行所有操作)的正确性能是关于您的日常任务的性能:
如果您了解limits of a DVCS,基本操作的原始性能并不那么重要:您不能将所有东西(所有项目或所有种类的像二进制文件这样的文件)。
必须进行某种模块重组,以定义每个“模块”(连贯文件集)的正确数量的 repo。
七年后的 2018 年更新:Windows 对 Git 的支持现已成为现实,旨在提高 Git 的性能/可扩展性。
为了说明这一点,Microsoft 将其 整个 Windows 代码库放入 一个(巨型)Git 存储库:请参阅“The largest Git repo on the planet”:3.5M 文件,300GB,4,000 名工程师除了数千个拉取请求验证构建之外,每天在 440 个分支中生成 1,760 个“实验室构建”。
但是这是添加了 GVFS (Git Virtual FileSystem),它允许仅动态下载您的部分需要根据您的使用情况而定。
这在 Git 原生中不是,虽然 its integration has begun last Dec. 2017, with the implementation of a narrow/partial cloning。
【讨论】:
正如@MartinGeisler 在他的回答中指出的那样,提交时间非常短(如果你通过命令行提交,你的 shell 会立即返回)。
需要很长时间的是网络clones/pushes/pulls。 Google 在他们不得不为 Google 代码 选择 DVCS 时发布了 small benchmark (see footnote 1),但它已经很老了(2008 年夏季)。
【讨论】:
Eric Sink 发布了针对 SVN、Bazar、Mercurial、Git 和他自己的 Veracity 的基准测试的 results。
不幸的是,这只是一个单一的操作(一次提交),只有一个代码库(Valgrind),我不确定他为所有这些 VCS 使用了哪个版本,但无论如何它一定很旧,因为文章可以追溯到到 2011 年。我想这就是 Eric 自己将它们定义为“可笑不科学的基准”的原因。无论如何,为了它的价值:
SVN 比其他的慢得多(几乎 22 秒),但所有其他的都相似(在 3 到 5 秒之间)。 Git 显然是最快的,按百分比计算,它甚至比 Mercurial 快 很多(多花费 43% 的时间),但实际上我们谈论的是 1.4 秒的差异 - 几乎不明显。
除此之外,我现在找不到源代码,但我多次阅读 Git 更快,尽管差异微不足道(这证实了 Eric 所做的这个测试)。所以在选择哪一个时我不会太担心速度。
【讨论】: