Evitar navegación.
Principal

Test de algunas funciones Php

Estos tests se han realizado en un VIA Nehemiah 999 MHz con 480 Mb RAM, Windows XP Professional SP2 y PHP 5.2.1. Los scripts necesarios para realizar estas pruebas pueden ser descargados.

1. sizeof vs count

En primer lugar veamos las funciones sizeof y count. Ambas pueden ser utilizadas para contar el número de elementos de un array.

sizeof vs count

sizeof: 3.75928902626 microsegundos
count: 3.33035206795 microsegundos
Tiempo ahorrado: 0.428936958313 microsegundos; 12.8796280262%

La función "count" es un 12% más rápida y ambas tardan entre 3 y 4 microsegundos en contar los elementos de un array con 100.000 elementos. No sólo es más rápida en la ejecución sino que incluso es más sencilla de recordar y más corta a la hora de escribirla en código.

2. is_int vs is_integer

Vamos a ver cuál de estas funciones valida mejor.

is_int vs is_integer

is_int: 3.11394786835 microsegundos
is_integer: 3.42630600929 microsegundos
Tiempo ahorrado: 0.312358140945 microsegundos; 9.11646946006%

La diferencia es pequeña un 9% y ambas tardan en torno a los 3 microsegundos en validar una variable, de nuevo vuelve a ser la función de nombre más corto la más eficiente.

3. chop vs rtrim

Vamos a ver con que función es más rápido eliminar espacios de una cadena.

chop vs rtrim

chop: 4.73731994629 microsegundos
rtrim: 4.41647195816 microsegundos
Tiempo ahorrado: 0.320847988129 microsegundos; 7.26480301852%

Rtrim es más rápido y ambas de nuevo están en torno a los 4 microsegundos.

4. doubleval vs floatval

Con estas dos funciones obtendremos el valor flotante de una variable.

doubleval vs floatval

doubleval: 4.56571412086 microsegundos
floatval: 4.35375285149 microsegundos
Tiempo ahorrado: 0.211961269379 microsegundos; 4.8684727087%

La diferencia es muy pequeña por lo que prácticamente es indiferente decantarse por una de las dos.

5. fwrite vs fputs

Una de las comparaciones en las que vamos a encontrar una diferencia más notable es en esta en la que comparamos funciones de escritura a archivos.

fwrite vs fputs

fwrite: 24.9826359749 microsegundos
fputs: 20.1990799904 microsegundos
Tiempo ahorrado: 4.7835559845 microsegundos; 23.6820488199%

La diferencia es de un 23% de tiempo ahorrado si utilizamos fputs claramente más rápida.

6. implode vs join

Con estas dos funciones podemos unir elementos de una matriz y ambas obtienen un rendimiento parecido.

implode vs join

implode: 47.2712550163 microsegundos
join: 50.1287050247 microsegundos
Tiempo ahorrado: 2.85745000839 microsegundos; 5.70022705949%

La verdad que un 5% no nos dice mucho pero lo cierto es que 3 microsegundos no deberían ser ignorados.

7. ini_alter vs ini_set

Para terminar compararemos estas dos funciones para establecer algunas opciones de configuración en este caso "max execution time" a 60 segundos un millón de veces.

ini_alter vs ini_set

ini_alter: 103.332370043 microsegundos
ini_set: 86.2883789539 microsegundos
Tiempo ahorrado: 17.0439910889 microsegundos; 19.7523598143%

Sin duda utilizando ini_set nos ahorraremos un buen puñado de tiempo.

Todas las mediciones de tiempo están hechas con la función microtime que nos devuelve la marca de tiempo en micro-segundos, un microsegundo es la millonésima parte de un segundo, 10-6 segundos.

Enlaces Relacionados


Buenísimo, pero ojo!!!

Buenísimo, pero ojo!!! is_integer nada tiene q ver con is_int, chop con rtrim, doubleval con floatval más en un x64, fwrite con fputs no digo mucho no recuerdo el internal de este pero si es como debe ser no son sinónimos, implode con join nada q ver, ini_alter con ini_set tampoco son equivalentes.
Y las pruebas de count y sizeof las hiciste repetidamente? chequealo por las dudas.

Saludos, igual valió el esfuerzo.

ya estaba

Esto ya lo habian puesto hace bastante :S Se estaran quedando sin contenido para agregar? :P

10^-6 Es importante, porque

10^-6

Es importante, porque alguien puede despistarse... 10 elevado a menos seis, no diez menos seis...

Aunque se entiende bien.

Esta bien lo de las mediciones... Puede que coloque un artículo en mi blog del tema... Pero sobre como ahorrar tiempo en IF's

Saludos, PAZ!

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato