2010-02-13 36 views
14

Cuando uso MSYS para compilar algo, el paso ./configure puede llevar más tiempo que el make. Sin embargo, el mismo proceso en Linux tiene una configuración rápida y una creación lenta. ¿Es esto solo una configuración en MSYS que atasca mi sistema? ¿Alguien tiene una solución?¿Por qué configurar tan lento en MSYS?

Respuesta

21

Las secuencias de comandos típicas configure hacen un lote de comenzar pequeños subprocesos. En los sistemas operativos tipo Unix, esto se hace con las llamadas a función fork() y exec(), que tienen una semántica muy particular que debe preservarse (por ejemplo, memoria compartida de copia sobre escritura después del bifurcación). En Windows, los subprocesos se crean con CreateProcess() que tiene una semántica muy diferente (por ejemplo, espacio de memoria completamente separado del principal). Para ejecutar scripts y programas similares a Unix correctamente, MSYS necesita hacer un montón de trabajo de emulación para hacer que la creación de nuevos procesos en Windows funcione como fork()/exec() en Unix. Esto termina siendo más lento que un SO que ofrece esas llamadas de función de forma nativa.

+2

En realidad no es tan malo para 'CreateProcess' en Windows. Creo que cygwin intenta emular fork en Windows, lo que lo hace increíblemente lento. Si bash no usaba tenedor (supongo que usa fork, pero no lo verifiqué) para iniciar procesos, entonces la configuración se ejecutaría igual de rápido. En mi i7 box cuando estaba tratando de solucionar este "problema", parecía que Cygwin solo podía bifurcar unas pocas veces por segundo. Una forma de probar la velocidad de la horquilla: while (true); hacer la fecha; hecho | uniq -c – Pavel

+1

+1 Pavel .. uclinux tenía el mismo problema que se puede ejecutar sin una MMU y cualquier cosa con horquilla utilizaba una copia completa muy lenta – user1496062

0

Es posible que también desee apagar los escáneres de virus que tenga en ejecución. Reexaminarán un ejecutable cada vez que se cargue, lo que destruye por completo el rendimiento del script.

Incluso si no tiene antivirus funcionando, no se olvide de Windows Defender. (También es posible que desee deshabilitar el Control de cuentas de usuario, aunque no sé qué impacto tiene en el tiempo de carga del programa.)

0

Se requiere mucho acceso a disco, lo que en mi humilde opinión demora mucho las cosas. Por ejemplo, configure crea un código fuente temporal que se compilará como parte de las pruebas que realiza. Esto crea un archivo de objeto que debe borrarse nuevamente. Lo que hago para acelerar la configuración es extraer la fuente que quiero construir en una unidad RAM y configurarla y compilarla allí. Recomiendo usar ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk) que es gratis.

Cuestiones relacionadas