Temo que não há muito o que fazer sobre isso.
O Windows não possui uma fork()
syscall nativa, então o Cygwin deve emular isso. A implementação dessa emulação é muito ineficiente. (Veja Perguntas freqüentes sobre o Cygwin )
O MSYS2, que é frequentemente usado em aplicações onde se quer um ambiente de linha de comando do Linux parecido com o do Windows, é baseado no Cygwin, e é por isso que ele também é afetado por isso.
Na verdade, é tão ruim que um fork()
no Windows é pelo menos uma ordem de magnitude mais lenta que no Linux
msys2bash-windows-box$ time { date; }
Sa, 24. Feb 2018 16:51:44
real 0m0,046s
user 0m0,000s
sys 0m0,000s
msys2bash-windows-box$ while (true); do /bin/date --utc; done | uniq -c
13 Sa, 24. Feb 2018 15:57:18
17 Sa, 24. Feb 2018 15:57:19
16 Sa, 24. Feb 2018 15:57:20
bash-linux-box$ time { date; }
Sat Feb 24 15:51:54 UTC 2018
real 0m0.002s
user 0m0.000s
sys 0m0.000s
bash-linux-box$ while (true); do date --utc; done | uniq -c
211 Sat Feb 24 15:56:35 UTC 2018
286 Sat Feb 24 15:56:36 UTC 2018
260 Sat Feb 24 15:56:37 UTC 2018
O exemplo acima mostra a diferença entre uma caixa i5-2500k @ 4GHz, 32GiB RAM do Windows 10 Pro em comparação com um débil one-core, 1GiB RAM VPS