2012-04-14 18 views
11

Aprendí sobre las pystones hoy, así que decidí ver cómo eran mis diversos entornos. Corrí pystones en mi ordenador portátil que ejecuta Windows en el metal desnudo y tengo estos resultados¿Por qué Python es mucho más lento en Windows?

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from test import pystone 
>>> for i in range(0,10): 
... pystone.pystones() 
... 
(1.636334799754252, 30556.094026423627) 
(2.1157907919853756, 23631.82607155689) 
(2.5324817108003685, 19743.479207278437) 
(2.541626695533182, 19672.4405231788) 
(2.536022267835051, 19715.915208695682) 
(2.540327088340973, 19682.50475676099) 
(2.544761766911506, 19648.20465716261) 
(2.540296805235016, 19682.739393664764) 
(2.533851636391205, 19732.804905346253) 
(2.536483186973612, 19712.3325148696) 

Entonces me encontré con que en algunas de nuestras máquinas virtuales Linux y me 2.7-3.4 veces mejor rendimiento. Así que encendí mi Linux VM de VMware en mi portátil y volvió a ejecutar la misma prueba y obtuve los siguientes resultados:

Python 2.7.2+ (default, Oct 4 2011, 20:03:08) 
[GCC 4.6.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> for i in range(0,10): 
... pystone.pystones() 
... 
(1.75, 28571.428571428572) 
(1.17, 42735.042735042734) 
(1.6600000000000001, 30120.48192771084) 
(1.8399999999999999, 27173.913043478264) 
(1.8200000000000003, 27472.52747252747) 
(1.8099999999999987, 27624.30939226521) 
(1.3099999999999987, 38167.938931297744) 
(1.7800000000000011, 28089.88764044942) 
(1.8200000000000038, 27472.527472527414) 
(1.490000000000002, 33557.04697986573) 

Estoy totalmente no podemos entender cómo la máquina virtual Linux se ejecuta dentro de la misma ventana es más rápido que Python se ejecuta en el mismo metal desnudo debajo de las ventanas.

¿Qué tiene de python en Windows que sea más lento en el sistema operativo que en una máquina virtual que ejecuta Linux en el mismo cuadro?

  • Más detalles plataforma Windows de 32 bits Win7x64 pitón que se ejecuta en ambas plataformas bits Linux 32 VM en ejecución en la plataforma Windows VMWare
+0

Depende de los otros procesos que se están ejecutando al mismo tiempo. –

+2

Diferente libc.* ejecuta * –

+5

¿Se estaba ejecutando Python en la máquina virtual y en Linux de 64 bits? Veo que la versión de Windows era de 32 bits. Asegúrate de que estás comparando manzanas con manzanas. – agf

Respuesta

7

no puedo responder a su pregunta, sin embargo, consideran que esta lista de cosas que podrían marcar la diferencia:

  • Está utilizando versiones diferentes de Python. "2.7.2+" indica que tu linux Python se creó a partir de una salida de control de versiones en lugar de una versión.

  • Se compilaron con diferentes compiladores (y posiblemente diferentes niveles de optimización).

  • No ha mencionado la reproducción de esta cantidad. Es concebible que fue un golpe de suerte si no lo has hecho.

  • Su máquina virtual puede estar sincronizando de forma incorrecta.

  • Estás vinculando diferentes implementaciones de las dependencias de Python, especialmente libc, como señala Ignacio Vazquez-Abrams.

  • No sé cómo son los puntos de referencia reales de pystone, pero muchas cosas funcionan de manera diferente: cosas como el manejo de unicode o el disco IO podrían ser factores dependientes del sistema.

+0

reproduje 3 veces antes de escribir esto. Sí, no lo mencioné sin embargo. – boatcoder

3

¿Ejecuta el software antivirus en esa caja de Windows? Esto quizás podría explicarlo. Personalmente, me gusta agregar Python, Cygwin y mi directorio de fuentes a la lista de exclusión de antivirus, creo que tengo una aceleración pequeña, pero notable. Tal vez eso explique tus resultados.

+0

No, no hay antivirus. – boatcoder

2

Tuve un problema similar en Windows 10 - fue por Windows defensor.

Tuve que excluir los directorios de python y procesarlos en la configuración de Windows Defender y reiniciar la computadora.

Antes: Tuve que esperar unos ~ 20 segundos para ejecutar cualquier código python; ahora son milisegundos.

Cuestiones relacionadas