如何加速Cygwin?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何加速Cygwin?相关的知识,希望对你有一定的参考价值。
我一直在我的相对较快的Windows机器上运行drush脚本(用于Drupal)和Cygwin,但是我仍需要等待大约一分钟来执行任何drush命令(特别是drush cache clear执行)。
我很确定它与Cygwin的速度有关,因为我的开发人员(运行Linux的人)可以在大约5秒内运行这些脚本。
有没有办法让Cygwin每个终端使用更多的内存和/或CPU?
您遇到的问题不是Cygwin中的任意限制,您可以通过设置更改消除这些限制。这是Cygwin必须努力获得在其下构建的POSIX语义程序的方式的固有方面。
POSIX fork()
系统调用在Windows上没有本机等效,因此Cygwin被迫在a very inefficient way中模拟它。 Shell脚本在每次执行外部进程时都会调用fork()
,这种情况发生得非常多,因为shell脚本语言相对于我们通常称之为编程语言的东西而言非常贫乏。外部程序是shell脚本如何完成任何后果的。
Cygwin还有其他低效率,但如果你对它进行了分析,你可能会发现这是速度最快的。在大多数地方,使用它构建的程序和底层操作系统之间的Cygwin层非常薄。 Cygwin的开发人员需要花费很多精力来保持图层尽可能薄,同时仍然提供正确的POSIX语义。 fork()
调用仿真中当前不常见的厚度是不可避免的,因为微软在他们的操作系统中添加了一个原生的fork()
类型设施。他们这样做的动力并不是很好。
上面作为评论发布的解决方案也不错。
另一种可能性是通过drush
脚本,看看是否有外部程序的调用,你可以用shell内在函数或更有效的结构替换。我不希望通过这样做可以大幅度提高速度,但它具有很好的性能,你也可以加速Linux方面的速度。 (fork()
在Linux上很有效,但启动外部程序仍然是一个很大的速度,你可能不必像现在这样经常付费。)例如:
numlines=`grep somepattern $somefile | wc -l`
if [ $numlines -gt 0 ] ; then ...
会运行得更快:
if grep -q somepattern $somefile ; then ...
第一个版本可以说更清晰,但它至少需要三个外部程序调用,而原始shell需要四个。 (你看到了所有这些吗?)替换只需要一个外部程序调用。
还要看看减缓Cygwin启动速度的事情:
- 修剪你的Windows PATH(像%SystemRoot% system32;%SystemRoot%这样的裸机)
- 从bashrc和bash_profile中删除不需要的内容
- 将您在终端窗口中只需要的东西从bashrc移动到bash_profile
- Cygwin的一个令人惊讶的大时间吮吸是Bash完成。如果您正在使用它(并且您应该因为它很棒),只需要完成所需命令的源代码(而不是所有这些命令都是默认命令)。并且,如上所述,从
bash_profile
,而不是bashrc
来源。
你可以给Cygwin一个更高的优先级。
编写一个新的批处理文件,例如“cygstart.bat”,其中包含以下内容:
start "Cygwin" /high C:cygwinCygwin.bat
/high
开关为shell提供了更高的进程优先级。
以上是关于如何加速Cygwin?的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段
11.按要求编写Java应用程序。 创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的(代码片段
按要求编写Java应用程序。 创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量(代码片段