Pregunta

Estoy tratando de obtener algunas comparaciones precisas del tiempo de ejecución de PHP frente a Python (y potencialmente cualquier otro lenguaje que deba incluir).El tiempo dentro de un script no es mi problema, pero el tiempo dentro de un script no tiene en cuenta todo desde el momento en que se realiza la solicitud para ejecutar el script hasta su salida.

1) ¿Realmente vale la pena tener en cuenta estas cosas?

2) Suponiendo que valga la pena tenerlo en cuenta, ¿cómo lo hago?

Estoy usando una Mac, así que tengo acceso a los comandos de Linux y no tengo miedo de compilar/crear un comando para ayudarme, simplemente no sé cómo escribir dicho comando.

¿Fue útil?

Solución

Si su idea es comparar los idiomas, diría que cualquier cosa fuera de ellos no es relevante para fines de comparación.

No obstante, puede utilizar el comando de tiempo para medir todo y compararlo con el tiempo dentro de un guión.

Como esto:

$ time script.php
HI!

real    0m3.218s
user    0m0.080s
sys     0m0.064s

Le dará la hora del reloj, la hora del usuario (intérprete php) y la hora del sistema (hora del sistema operativo).

Si está pensando en la web, entonces se vuelve mucho más difícil porque estaría mezclando la sobrecarga del servidor web y eso no siempre es fácil de comparar si, por ejemplo, está usando WSGI v/s mod_php.Entonces también tendrías que conectar sondas a las partes de la cadena que sirven al servidor web.

Otros consejos

  1. Vale la pena tener en cuenta la velocidad si estás optimizando el código.Generalmente debes saber por qué estás optimizando el código (como en:una tarea específica en su código base existente está tomando demasiado tiempo, no "Escuché que PHP es más lento que Python").Es no Vale la pena tener en cuenta la velocidad si no planeas cambiar de idioma.El hecho de que un pequeño módulo haga algo un poco más rápido no significa que reescribir su aplicación en otro idioma sea una buena idea.Hay muchos otros factores a la hora de elegir un idioma además de la velocidad.

  2. Usted compara, por supuesto.Ejecute las dos bases de código varias veces y compare los tiempos.Puedes usar el tiempo comando si ambos scripts son ejecutables desde el shell, o usan la funcionalidad de evaluación comparativa respectiva de cada idioma;el último caso depende en gran medida del idioma real, naturalmente.

Bueno, puedes usar el comando "tiempo" para ayudar:

you@yourmachine:~$ time echo "hello world"
hello world

real    0m0.000s
user    0m0.000s
sys 0m0.000s
you@yourmachine:~$ 

Y esto solucionará el tiempo fuera del entorno.

En cuanto a si realmente necesitas cronometrar ese trabajo extra...eso depende completamente de lo que estés haciendo.Supongo que esto es para algún tipo de aplicación web de algún tipo, por lo que depende de cómo funciona realmente el marco que utilices...¿Almacena en caché algún tipo de versión compilada (o analizada) del script?Si es así, entonces el tiempo de inicio será totalmente irrelevante (ya que el primer hit será el único en el que exista el tiempo de inicio).

Además, asegúrese de ejecutar sus pruebas en un bucle para poder descontar la primera ejecución (e incluir el costo de la primera ejecución en su informe si lo desea).He realizado algunas pruebas en Java y la primera ejecución siempre es la más lenta debido a que JIT hace su trabajo (y puede existir el mismo tipo de resultado en PHP, Python y cualquier otro lenguaje que pruebe).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top