Ver Mensaje Individual
  #15 (permalink)  
Antiguo 30/05/2007, 07:57
wrkjmg
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Rendimiento de PHP en un proceso complejo

Viereis ,me baso en que el código que escribís en realidad es compilado y convertido en instrucciones de ensamblador, que en realidad son las únicas que entiende el microprocesador.

El juego de instrucciones del microprocesador es distinto de PHP, una instrucción de suma en ensamblador podría ser
'ADD variable,3'
Esta instrucción consume un numero de pasos(ciclos) que tiene que dar el Microprocesador para realizar la operación, podrían ser 5 ciclos (en los pentium de antes eran 5, creo recordar, en los pentium 4 de ahora no lo se).
pero el micro incluye otra instrucción llamada
'INC variable'
que incrementa en 1 la variable, y esta operación solo le cuesta 1 ciclo, por lo que hacer variable+3 = 5 ciclos del micro y hacer inc variable x 3 = 3 ciclos del micro. Es mas rápido para el micro la segunda opción.

El motor de PHP lo que hace es convertir nuestro código en estas instrucciones del micro, por eso PHP tiene la opción de variable++, que es igual que la instrucción INC variable de ensamblador.
Si no para que se iban a molestar en incluir la opción de variable++, cuando cuesta casi lo mismo que escribir variable += 1.

Además es mas rápido para el motor de PHP, porque sabe que variable++ es igual a INC variable sin necesidad de comprobar nada mas, pero variable+=3 , primero tiene que mirar si el parámetro a sumar (que en este caso es 3) es un numero , o un caracter , o es un numero de coma flotante...etc, porque la suma no se hace igual si es un numero entero que un flotante ó un carácter, porque podría ser una letra en lugar de un numero ($variable+='a' esto PHP lo acepta). Todo el proceso que hace PHP para comprobar esto es tiempo de proceso del micro.

Os puedo asegurar que a PHP le cuesta mas procesar $variable+=1 que $variable++. Muchos compiladores optimizan el código y convierte automaticamente un $variable+=1 en un $variable++, porque saben que el resultado es el mismo pero $variable++ es mas rápido. En el caso de PHP no se si sera así.

Por el mismo motivo, aunque en PHP hay varias funciones que realizan la misma tarea, según para que sea, te recomiendan que uses unas en lugar de otras, porque una es mas rápida que otra. Leeros del manual oficial de PHP ttp://es2.php.net/manual/es/function.strstr.php es la explicacion de la función strstr() vereis como recomienda usar strpos() segun que caso.

En fin, espero haberme explicado bien, es difícil ya que pocos se acuerdan ya del ensamblador y el C original (sin ++), que eran lenguajes mas directos al juego de instrucciones del micro. Me estoy haciendo viejo