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: 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: 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: 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: 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: 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: 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.





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