Como ya se ha mencionado, Cygwin's implementation de fork y proceso de desove en Windows en general son lentos.
Usando this fork() benchmark, me sale siguientes resultados:
[email protected]:~$ ./test 1000
Forked, executed and destroyed 1000 processes in 5.660011 seconds.
[email protected]:~$ ./test 1000
Forked, executed and destroyed 1000 processes in 0.142595 seconds.
[email protected]:~$ ./test 1000
Forked, executed and destroyed 1000 processes in 1.141982 seconds.
Uso time (for i in {1..10000};do cat /dev/null;done)
al rendimiento de los procesos de desove de referencia, consigo siguientes resultados:
[email protected]:~$ time (for i in {1..10000};do cat /dev/null;done)
(...) 19.11s user 38.13s system 87% cpu 1:05.48 total
[email protected]:~$ time (for i in {1..10000};do cat /dev/null;done)
(...) 0.06s user 0.56s system 18% cpu 3.407 total
[email protected]:~$ time (for i in {1..10000};do cat /dev/null;done)
(...) 0.51s user 4.98s system 21% cpu 25.354 total
especificaciones de hardware:
- cygwin:
Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
- arco:
Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
- debian:
Intel(R) Core(TM)2 Duo CPU T5270 @ 1.40GHz
Así que como ves, no importa lo que se utiliza, Cygwin siempre funcionará peor. Se pierde sin problemas incluso para hardware peor (cygwin
frente a debian
en este punto de referencia, según this comparison).
Los procesos de desove en Windows son muy lentos en comparación con Linux: no hay mucho que cygwin pueda hacer para evitar esta limitación. –
Compruebe si [esto] (http://stackoverflow.com/questions/2835775/msysgit-bash-is-horrendously-slow-in-windows-7) ayuda. –
@PaulR pero no creo que sea tan lento como para resultar en un retraso de 3 minutos. Creo que había otros procesos ejecutándose en Windows cuando el OP intentó esto. O usó algo que es significativamente diferente en Windows y Linux dentro de su programa. –