composer bash drupal cygwin drush

bash - composer php 7



¿Cómo acelerar Cygwin? (3)

El problema con el que te encuentras no es un límite arbitrario en Cygwin que puedas eliminar con un cambio de configuración. Es un aspecto inherente de la forma en que Cygwin tiene que trabajar para obtener los programas de semántica POSIX creados bajo la expectativa.

La llamada al sistema fork() POSIX no tiene un equivalente nativo en Windows, por lo que Cygwin se ve obligado a emularlo de una manera muy ineficiente . Los scripts de shell provocan una llamada a fork() cada vez que ejecutan un proceso externo, lo que sucede bastante ya que los lenguajes de script de shell están tan empobrecidos en relación con lo que normalmente llamamos un lenguaje de programación. Los programas externos son la forma en que los scripts de shell logran hacer algo importante

Hay otras ineficiencias en Cygwin, aunque si lo perfilaste, probablemente encuentres que esa es la velocidad número uno. En la mayoría de los lugares, la capa Cygwin entre un programa creado y el sistema operativo subyacente es bastante delgada. Los desarrolladores de Cygwin se esfuerzan mucho por mantener la capa lo más delgada posible y al mismo tiempo proporcionan la semántica POSIX correcta. El grosor poco común actual en la emulación de llamada fork() es inevitable a menos que Microsoft agregue una instalación de tipo fork() nativa a su sistema operativo. Sus incentivos para hacer eso no son muy buenos.

Las soluciones publicadas anteriormente como comentarios no son malas.

Otra posibilidad es ir a través del script drush y ver si hay llamadas a programas externos que pueda reemplazar con shell intrínsecos o construcciones más eficientes. No esperaría una gran mejora en la velocidad al hacer eso, pero tiene la buena propiedad de que usted también acelerará las cosas en el lado de Linux. ( fork() es eficiente en Linux, pero iniciar programas externos sigue siendo un gran golpe de velocidad que quizás no tenga que pagar con la frecuencia que lo hace actualmente). Por ejemplo:

numlines=`grep somepattern $somefile | wc -l` if [ $numlines -gt 0 ] ; then ...

correría más rápido como:

if grep -q somepattern $somefile ; then ...

La primera versión es posiblemente más clara, pero requiere al menos tres invocaciones de programas externos, y con shells primitivos, cuatro . (¿Los ve todos?) El reemplazo requiere solo una invocación de programa externo.

He estado ejecutando drush scripts (para Drupal ) con Cygwin en mi máquina Windows relativamente rápida, pero todavía tengo que esperar aproximadamente un minuto para que se ejecute cualquier comando de drush (específicamente el borrado de caché para ejecutar).

Estoy bastante seguro de que tiene algo que ver con la velocidad de Cygwin, ya que mis compañeros desarrolladores (que ejecutan Linux) pueden ejecutar estos scripts en aproximadamente 5 segundos.

¿Hay alguna manera de hacer que Cygwin use más memoria y / o CPU por terminal?


Puedes darle a Cygwin una prioridad más alta.

Escriba un nuevo archivo por lotes, por ejemplo, "cygstart.bat" con el siguiente contenido:

start "Cygwin" /high C:/cygwin/Cygwin.bat

El /high le da al shell una prioridad de proceso más alta.


También mire las cosas que retrasan el inicio de Cygwin:

  • Recorte su Windows PATH (al pie de la letra como% SystemRoot% / system32;% SystemRoot%)
  • Elimina las cosas que no necesitas de bashrc y bash_profile
  • Mueve las cosas que solo necesitas en tu ventana de terminal desde bashrc a bash_profile
  • Un golpe de tiempo sorprendentemente grande en Cygwin es la finalización de Bash. Si lo está utilizando (y debería porque es genial), solo complete la fuente para los comandos que necesita (en lugar de todos ellos, que solían ser los predeterminados). Y, como se mencionó anteriormente, bash_profile de bash_profile , no bashrc .