0

我花了很长时间试图弄清楚这个难题。当谈到 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”):这是许多不同的事情:

  1. V1使用cygwin setup.exe升级到最新
  2. Babun v 1.2.0 的全新安装(是的,与 V1 相同!!)
  3. 全新安装 cygwin 64 位
  4. 每晚全新安装 Babun(来自http://40.114.204.90,我手边没有创建它的 Babun 叉子)

排除了通常的嫌疑人

问题是对于 git 操作,Version1 至少快 3 倍,并且在同一台机器上的fork 性能比 Version2 快近 50% 。我查看了 SO 和其他地方的“Slow Cygwin”帖子,实际上是我能找到的任何内容。这包括:

  1. 排除了任何BLODA 软件(查看了 BLODA 列表,并尝试打开 cygwinCYGWIN=detect_bloda并没有发现任何意外。很早就发现 ConEmuHK 注入是一个问题,我已经禁用它无济于事。另外排除任何事情类似的以下所有测试都是使用核心 shell 可执行文件 (zsh.exe) 或使用 mintty.exe 完成的,而顶部没有任何包装器,如 Conemu。
  2. 使用 strace 比较 V1 和 V2 加载的 DLL。显然,cygwin 特定的 DLL 是不同的,但非 Cygwin DLL 的列表是相同的。
  3. 我还尝试从 V1(快)-> V2(慢)分块复制 Cygwin DLL,在每次复制操作后执行 rebaseall。
  4. 我还试图找出 Babun 在创建便携式 Cygwin 安装时是否有特定的功能
  5. 我的 PATH 是最小的。路径上没有任何网络共享

    /usr/local/bin
    /usr/local/sbin
    /usr/bin
    /cygdrive/c/WINDOWS/system32
    /cygdrive/c/WINDOWS
    /cygdrive/c/WINDOWS/System32/Wbem```
    
  6. /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

4

0 回答 0