我花了很长时间试图弄清楚这个难题。当谈到 Cygwin 缓慢时,我已经排除了通常的嫌疑人。我有两种不同的 Cygwin 安装,它们的性能截然不同。这在下面被量化为“分叉性能”以及执行git difftool
操作的时间。
有人可以建议我接下来应该看什么吗?快速 cygwin 安装非常有用,但我现在需要一些最新的软件包,并且任何尝试安装,例如,python 3.x 都会导致整个安装升级(并因此减慢:( )。
性能差异总结
+---------------------------+----------------+-----------------+----------------------+
| Desc | Version1(Fast) | Version2(Slow) | Git Bash for Windows |
+---------------------------+----------------+-----------------+----------------------+
| git difftool (System CPU) | 15% | 69% | |
| git difftool (Total Time) | 3.284s | 10.549s | 0.46s |
| fork performance | ~15 | ~10 | ~22 (!!) |
+---------------------------+----------------+-----------------+----------------------+
正在比较的 Cygwin 安装说明
版本 1(以下称为“V1”):这是Babun Cygwin v 1.2.0(最新稳定版本)。请注意,babun 本身已被废弃,因此这个版本的 Cygwin(64 位)已经过时了。
版本 2(以下称为“V2”):这是许多不同的事情:
- V1使用cygwin setup.exe升级到最新
- Babun v 1.2.0 的全新安装(是的,与 V1 相同!!)
- 全新安装 cygwin 64 位
- 每晚全新安装 Babun(来自http://40.114.204.90,我手边没有创建它的 Babun 叉子)
排除了通常的嫌疑人
问题是对于 git 操作,Version1 至少快 3 倍,并且在同一台机器上的fork 性能比 Version2 快近 50% 。我查看了 SO 和其他地方的“Slow Cygwin”帖子,实际上是我能找到的任何内容。这包括:
- 排除了任何BLODA 软件(查看了 BLODA 列表,并尝试打开 cygwin
CYGWIN=detect_bloda
并没有发现任何意外。很早就发现 ConEmuHK 注入是一个问题,我已经禁用它无济于事。另外排除任何事情类似的以下所有测试都是使用核心 shell 可执行文件 (zsh.exe) 或使用 mintty.exe 完成的,而顶部没有任何包装器,如 Conemu。 - 使用 strace 比较 V1 和 V2 加载的 DLL。显然,cygwin 特定的 DLL 是不同的,但非 Cygwin DLL 的列表是相同的。
- 我还尝试从 V1(快)-> V2(慢)分块复制 Cygwin DLL,在每次复制操作后执行 rebaseall。
- 我还试图找出 Babun 在创建便携式 Cygwin 安装时是否有特定的功能
我的 PATH 是最小的。路径上没有任何网络共享
/usr/local/bin /usr/local/sbin /usr/bin /cygdrive/c/WINDOWS/system32 /cygdrive/c/WINDOWS /cygdrive/c/WINDOWS/System32/Wbem```
/etc/passwd
通过创建静态和/etc/group
配置排除 LDAP 问题,/etc/nsswitch.conf
如下所示:
详细的性能统计
性能差异的详细信息如下。
版本 1 - 性能
? babun --version
babun version 1.2.0
Created and maintained by Tom Bujok (@tombujok)
Copyright (c) 2014-2015.
~
? while (true); do date --utc; done | uniq -c
11 Tue, Apr 16, 2019 8:16:43 AM
13 Tue, Apr 16, 2019 8:16:44 AM
13 Tue, Apr 16, 2019 8:16:45 AM
14 Tue, Apr 16, 2019 8:16:46 AM
14 Tue, Apr 16, 2019 8:16:47 AM
15 Tue, Apr 16, 2019 8:16:48 AM
14 Tue, Apr 16, 2019 8:16:49 AM
13 Tue, Apr 16, 2019 8:16:50 AM
14 Tue, Apr 16, 2019 8:16:51 AM
13 Tue, Apr 16, 2019 8:16:52 AM
13 Tue, Apr 16, 2019 8:16:53 AM
12 Tue, Apr 16, 2019 8:16:54 AM
14 Tue, Apr 16, 2019 8:16:55 AM
13 Tue, Apr 16, 2019 8:16:56 AM
14 Tue, Apr 16, 2019 8:16:57 AM
❯ time git -C ~/some-git-repo difftool "HEAD~^\!"
0.10s user 0.40s system 15% cpu 3.284 total
版本 2 - 性能
截至这篇文章的最新 Cygwin 64 位
❯ time git -C ~/some-git-repo difftool "HEAD~^\!"
0.14s user 7.17s system 69% cpu 10.549 total
? while (true); do date --utc; done | uniq -c
4 Tue, Apr 16, 2019 8:21:25 AM
10 Tue, Apr 16, 2019 8:21:26 AM
9 Tue, Apr 16, 2019 8:21:27 AM
10 Tue, Apr 16, 2019 8:21:28 AM
10 Tue, Apr 16, 2019 8:21:29 AM
10 Tue, Apr 16, 2019 8:21:30 AM
10 Tue, Apr 16, 2019 8:21:31 AM
10 Tue, Apr 16, 2019 8:21:32 AM
10 Tue, Apr 16, 2019 8:21:33 AM
10 Tue, Apr 16, 2019 8:21:34 AM
9 Tue, Apr 16, 2019 8:21:35 AM
10 Tue, Apr 16, 2019 8:21:36 AM