V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ballshapesdsd
V2EX  ›  问与答

为什么 git for windows 那么慢?

  •  
  •   ballshapesdsd · 2018-08-23 17:53:10 +08:00 · 4296 次点击
    这是一个创建于 2283 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以及为啥一定要在 windows 下模拟一个 linux 环境才能用,好奇怪

    举个例子,初始化一个仓库,添加 10000 个文件,总共 500M,windows 下 20 分钟,linux 下 8 秒,150 倍的性能差距,惊呆了我
    12 条回复    2018-08-24 14:09:52 +08:00
    12101111
        1
    12101111  
       2018-08-23 20:36:29 +08:00 via Android
    杀毒软件的问题,以及 NTFS 和 ext4 的确性能有差别,mingw 的性能与 WSL 与 Linux 差距几乎没有
    flynaj
        2
    flynaj  
       2018-08-23 20:49:57 +08:00 via Android
    这个就是文件系统的差别,还有杀毒软件
    yukiww233
        3
    yukiww233  
       2018-08-23 21:12:16 +08:00
    吓得我用一个 1w 文件的仓库试了一下
    mikicomo
        4
    mikicomo  
       2018-08-23 21:31:59 +08:00
    啥版本?都是啥文件?见过几分钟的,没见过几十分钟的....孤陋寡闻了
    SunnyFeng
        5
    SunnyFeng  
       2018-08-23 21:48:23 +08:00 via Android
    Windows 上使用 gerrit 来 git review 也比 Linux 上慢很多
    lmqdlr
        6
    lmqdlr  
       2018-08-23 22:08:41 +08:00 via Android
    git for windows 还好吧,wsl 是真的慢
    congeec
        7
    congeec  
       2018-08-23 22:13:53 +08:00 via iPhone
    不仅是文件系统的差别
    windows 上创建一个进程很慢的
    geelaw
        8
    geelaw  
       2018-08-23 22:57:22 +08:00   ❤️ 1
    如果建立 10000 个同样的 52428 B 的文件的话(建立一个然后复制),建立文件需要 40 秒,git add . 需要 1 分钟。

    如果建立 10000 个随机的 52428 B 的文件,建立文件需要 8.7 分钟,git add . 需要 1.5 分钟。

    以上建立文件是用 PowerShell 操作的。


    你可以参考

    https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow


    另外,@congeec #7 这个速度和 Windows 上建立进程的快慢没什么关系,因为 git add . 的过程里并没有创建很多进程(实际上,git add . 期间只有 2 个 git.exe 进程)。
    mmdsun
        9
    mmdsun  
       2018-08-23 23:18:54 +08:00 via Android
    win 2012 Server 上 git 速度比 centos 快。文件系统是 ReFS
    ksharp8
        10
    ksharp8  
       2018-08-24 09:03:32 +08:00
    推荐用 github desktop
    gnaggnoyil
        11
    gnaggnoyil  
       2018-08-24 13:13:37 +08:00
    >以及为啥一定要在 windows 下模拟一个 linux 环境才能用

    因为 git 源码里就直接假设所操作的 shell 是 POSIX shell,典型例子比如通过 ssh 对 remote 进行操作的时候.command 都写死在源码里的你敢信.
    ballshapesdsd
        12
    ballshapesdsd  
    OP
       2018-08-24 14:09:52 +08:00
    @gnaggnoyil #11 可以,很社会。


    @geelaw #8 在家里电脑测试了一下 5 分钟左右
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.