en: Programacion
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.
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.
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.
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.
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.
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.
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.
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.
1 Respuesta a Test de algunas funciones Php
Anónimo
11 de Enero de 2008 a las 1:17 am
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.
Juan
7 de Enero de 2008 a las 11:31 pm
Esto ya lo habian puesto hace bastante :S Se estaran quedando sin contenido para agregar?
ZydRick
7 de Enero de 2008 a las 4:28 pm
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!
Anónimo
8 de Octubre de 2008 a las 6:01 pm
5mentario jejejejejejejeje
Anónimo
8 de Octubre de 2008 a las 6:01 pm
5mentario jejejejejejejeje
Lenam
20 de Febrero de 2009 a las 1:25 pm
Gracias por el articulo me ahorraste tiempo.