How to speed up Cygwin?
我已经在我相对快速的Windows机器上使用cygwin运行drush脚本(对于drupal),但是我仍然需要等待大约一分钟才能执行任何drush命令(特别是drush cache clear)。
我很确定这与cygwin的速度有关,因为我的开发人员(运行Linux)可以在5秒内运行这些脚本。
有没有办法让Cygwin在每个终端上使用更多的内存和/或CPU?
您遇到的问题不是Cygwin中的某些任意限制,您可以通过更改设置来消除这些限制。这是Cygwin工作方式的一个固有方面,以获得在其预期下构建的POSIX语义程序。
posix
Cygwin还有其他一些效率低下的地方,但是如果你分析一下它,你可能会发现这是第一速度命中率。在大多数地方,使用cygwin构建的程序和底层操作系统之间的cygwin层非常薄。Cygwin的开发人员在提供正确的POSIX语义的同时,尽可能地保持层的薄。当前在
上面作为评论发布的解决方案也不错。
另一种可能性是浏览
1 2 | numlines=`grep somepattern $somefile | wc -l` if [ $numlines -gt 0 ] ; then ... |
运行速度更快:
1 | if grep -q somepattern $somefile ; then ... |
号
第一个版本可以说是更清晰的,但它至少需要三个外部程序调用,使用原始shell时需要四个。(你看到所有这些了吗?)替换只需要一个外部程序调用。
还可以看看那些减慢Cygwin启动的因素:
- 修剪Windows路径(到%SystemRoot%System32;%SystemRoot%这样的裸骨)
- 从bashrc和bash_配置文件中删除不需要的内容
- 将终端窗口中只需要的东西从bashrc移动到bash_配置文件
- 在Cygwin中,一个惊人的大时间是bash完成。如果您正在使用它(而且您应该这样做,因为它很好),那么只需要完成您所需要的命令的源代码(而不是所有以前是默认值的命令)。如前所述,来源于
bash_profile ,而非bashrc 。
你可以给Cygwin更高的优先级。
编写新的批处理文件,例如"cygstart.bat",内容如下:
1 | start"Cygwin" /high C:\cygwin\Cygwin.bat |