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
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.
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.)
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.
- 1. ¿Por qué putImageData es tan lento?
- 2. ¿Por qué AssetManger.list() es tan lento?
- 3. ¿Por qué Dictionary.First() es tan lento?
- 4. ¿Por qué PyPy se traduce tan lento?
- 5. ¿Por qué TestComplete es tan lento?
- 6. ¿Por qué DateTime.Parse es tan lento?
- 7. ¿Por qué este jquery es tan lento?
- 8. ¿Por qué numpy.array es tan lento?
- 9. ¿Por qué mi depurador es tan lento?
- 10. ¿Por qué mi código es tan lento?
- 11. ¿por qué ruby scanf es tan lento?
- 12. ¿Por qué DateTime.Now DateTime.UtcNow tan lento/caro?
- 13. ¿Por qué es tan simple este algoritmo haskell tan lento?
- 14. qué se cygwin tan lento
- 15. MySQL registro de consultas lento - ¿qué tan lento es lento?
- 16. Qué tan lento es Reflection
- 17. ¿Por qué jQuery Ajax es tan lento en IE7?
- 18. ¿Por qué mi Maven es tan lento en Ubuntu?
- 19. ¿Por qué PostgreSQL es tan lento en Windows?
- 20. ¿Por qué Array.Sort() es tan lento en comparación con LINQ?
- 21. ¿Por qué RSpec es tan lento en Rails?
- 22. C: ¿Por qué un fprintf (stdout, ....) es tan lento?
- 23. ¿Por qué se ejecuta tan lento el depurador?
- 24. ¿Por qué mi sitio web sinatra es tan lento?
- 25. ¿Por qué el código de Moose es tan lento?
- 26. ¿Por qué mi proyecto de Eclipse se desarrolla tan lento?
- 27. ¿Por qué se recomienda jQuery.ready cuando es tan lento?
- 28. ¿Por qué el simulador de teléfonos Android es tan lento?
- 29. ¿Por qué este selector jQuery es tan lento?
- 30. ¿Por qué es tan lento el array.map (String.fromCharCode)?
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 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