代码之家  ›  专栏  ›  技术社区  ›  ronaldosantana

Git和Mercurial-有人能解释一下这个测试结果吗

  •  5
  • ronaldosantana  · 技术社区  · 15 年前

    我在比较GIT和Mercurial的速度。

    这是一个假的项目,可能会给人一个如何解释我得到的结果的想法-这是一个wordpress下载,没有改变,并在两个文件夹中复制了12次-一个用于GIT,另一个用于Mercurial存储库。

    然后,我创建一个GIT存储库并提交(使用TortoiseGIT),完成后,我对Mercurial的另一个文件夹使用TortoiseHG进行了相同的操作。

    Git结果
    时间:32分30秒提交所有内容
    存储库大小:6.38MB,只有847个文件。

    多变的结果:
    时间:1分25秒-是的,只有1分钟。

    我不是在争论最好的或者别的什么,我只是想了解它们之间的区别以及两种SCM是如何创建存储库的。

    看起来HG做了一份文件的拷贝,并进行了某种压缩。
    但我不明白吉特做了什么。

    注:我知道关于GIT和Mercurial已经有一些问题,我只是想弄清楚这个测试的结果——即使它是一个有效的测试。当我开始的时候,我只是在检查速度,但是我的头上有一些问号。。。

    3 回复  |  直到 15 年前
        1
  •  18
  •   Vadim Kotov First Zero    8 年前

    检查工具;hg和git(命令行)都导入这些 再过一秒钟。考虑这些工具的命令行版本 而不是GUI包装器。

    效率高。Mercurial使用一个单独的文件作为每个文件的revlog, 而git喜欢保持事物的统一性。特别是,复制 同一个目录12次在git中几乎不需要额外的空间。但是 成千上万的文件和图像,不仅仅是最初的提交, DVCS可能不是适合您的工具。像rsync或 集中式VCS会更好,DVCS通常是针对 随着时间的推移。其他类型的工具会做出不同的权衡。

    仔细检查出现的文件;您可以阅读 如果你愿意的话,提供文件。这里的主要教训是git 整个目录结构的快照,它允许 有效地打包东西(wordpress的包是2.7MB,不是 大于tarball),但计算diff的成本可能更高。 这意味着只访问一个文件的日志比 在git中,但是许多相同的文件和目录可以有更高的

    我也可以创造一个病理病例。以下是git获胜的原因:

    for dir in {1..100}; do
      mkdir $dir
      for file in {1..100}; do
        touch $dir/$file
      done
    done
    hg add {1..100}; hg commit -m tweedledee
    git add {1..100}; git commit -m tweedledum
    

    在十分之一秒内导入全部内容,然后提交 小于千字节。Mercurial,它为每个 文件,大约需要四秒钟来提交整个文件,最后 在.hg中有10140个新文件,总计40MB。

    以下是mercurial获胜的原因:

    mkdir -p a/b/c/d/e
    for i in {1..1000}; do
      echo hello >> a/b/c/d/e/file
      hg add a; hg commit -m "Commit $i"
      git add a; git commit -m "Commit $i"
    done
    

    一千次的承诺,每一次都在 对象,这些对象单独放气,但存储为单独的 整件东西大约32MB,装了620K。Mercurial,在 另一方面,每次只需在一些日志文件中添加一些注释,然后

    这一切的意义何在?关键是没有一个案子 本文的讨论是现实的。在日常使用中

    手册本身并没有从头到尾向您展示如何构建提交,但是 Git Internals in Pro Git , Internals in the Mercurial wiki ,和 Mercurial Internals from PyCon 2010 应该让你开始。

        2
  •  2
  •   Eric-Karl    15 年前

    至于您的示例中存储空间的差异,git不跟踪单个文件,因此它会注意到内容被重复,并且效率更高(同时占用更多时间)。。。然而,在现实生活中,这种情况多久发生一次?

    我建议你也读一下mpe的链接文章。:天

        3
  •  1
  •   Community Mohan Dere    9 年前

    这听起来不是一个很好的测试,也就是说,你并不经常承诺一个没有历史记录、12份相同内容的相同副本的项目。

    What is the Difference Between Mercurial and Git?

    Git and Mercurial - Compare and Contrast

    http://www.wikivs.com/wiki/Git_vs_Mercurial