🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #314

Re: PHP: Mitos o realidades?

#314
From: Sebastian E. Castro Avila
Date: Mon, 23 Jun 2008 23:46
108 lines
5028 bytes
In chile.comp.unix +mArkO+ <kitim@porta.com> wrote:
m> Esto lo encontre en una web

m> ===================================
m> TRUCOS PARA OPTIMIZAR EL CODIGO PHP
m> ===================================

m> 1)Si un m?todo puede ser static, decl?ralo como static.

m> 2)echo es m?s r?pido que print.

Ese lo habia leido.

m> 3)Utiliza m?ltiples echo?s en lugar de concatenar cadenas.

m> 4)Fija el valor m?ximo para los bucles antes del loop, y no estando ya 
m> dentro de ?l.

m> 5)Utiliza unset para las variables que ya no van a ser usadas,
m> especialmente arrays cargados, de forma que liberes memoria.

Esto es cierto en cualquier lenguaje, pero a menos que tengas centenas
de variables con mucho contenido y un script que corre miles de veces
por minuto, no lo vas a notar.

m> 6)require_once() es demasiado lenta y poco rentable.

m> 7)Utiliza rutas absolutas en includes y requires, reduciendo 
m> considerablemente el tiempo de carga.

m> 8)Si necesitas saber cuando comenz? a ejecutarse un script,
m> $_SERVER['REQUEST_TIME'] es preferible a time().

Esto es cierto porque time es una llamada a sistema y REQUEST_TIME es
una variable que ya esta en la memoria: te ahorras algunas
instrucciones.

m> 9)str_replace es mucho m?s r?pida que preg_replace, pero strtr es a?n m?s 
m> r?pida que str_replace.

Nada nuevo, en Perl tambien se recomienda evitar los reemplazos via
regex por rendimiento.

m> 10)Es mejor utilizar una estructura condicional switch-case que m?ltiples 
m> if-else anidados.

m> 11)Omitir errores mediante el uso de @ es bastante lento.

m> 12)Activa en Apache el modo mod_deflate.

m> 13)Cierra la conexi?n con la base de datos cuando ya no sea necesaria.

m> 14)$row['id'] es 7 veces m?s r?pido que $row[id].

m> 15)No utilices funciones dentro de bucles, como por ejemplo en ($x=0; $x < 
m> count($array); $x) La funci?n count() es ejecutada en cada pasadas.

m> 16)Utiliza variables locales. Incrementar una variable gloval es el
m> doble de lento que hacerlo con una local.

m> 17)Incrementar una propiedad de un objeto (ej. $this->prop++)es 3
m> veces m?s lento que el uso de una variable local.

Esto es cierto en C++ tambien.

m> 18)Inicializa las variables. Aunque no es necesario en PHP,
m> incrementar una variable no declarada es entre 9 y 10 veces m?s lento
m> que hacerlo con una ya declarada.

m> 19)Utiliza la comilla simple ' en lugar de la doble comilla " ya que
m> PHP no  busca variables entre comillas simples, y el tiempo de carga
m> puede verse reducido.

m> 20)No utilices scripts PHP si puedes usar HTML est?tico, ya que ?ste
m> ?tlimo carga entre 9 y 10 veces m?s r?pido.

m> 21)Instala alg?n sistema de cach? para que tus scripts no deban ser 
m> ejecutados cada vez que se carga una p?gina. ?ste punto reduce 
m> considerablemente el tiempo de carga de una p?gina y el uso de CPU del 
m> servidor.

Proxy reverso le llaman algunos.

m> 22)++$i es m?s r?pido que $i++ en PHP.

Esto es cierto tambien en C++ (y se nota si haces millones de sumas por
segundo), debido a que $i++ requiere hacer una copia de $i, la otra
actua sobre una referencia.

m> 23)No utilices todas las estructuras como clases, el uso de arrays en
m> muchos casos tambi?n es adecuado.

m> 24)Trata de hacer tu c?digo reutilizable y evitar redundancias.

Esto es cierto en cualquier lenguaje y no solo por 'performance' sino
para ahorrar horas hombre y hacer el desarrollo mas profesional.

m> 25)Puedes utilizar compresi?n Gzip para aumentar la velocidad de 
m> transferencia. 

Esta no es siempre conveniente: si tus scripts generan un output
peque~no, tomas mas tiempo y recursos en comprimir la salida. Esto es
util cuando la cantidad de datos a transferir es alta, no es llegar y
utilizar.

Saludos
-- 
Sebastian E. Castro Avila        ReQuiN        secastro@dcc.uchile.cl
Technical Details
Message-ID: <g3pck8$1m1$1@helcaraxe.dcc.uchile.cl>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news2.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!nx02.iad01.newshosting.com!newshosting.com!novia!newsfeed.yul.equant.net!news-santiago!helcaraxe.dcc.uchile.cl!not-for-mail
References: <g3k2so$gb$1@news.nivel5.cl>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,8ee269e0dd40bcf0
X-Google-Thread: 1054ea,8ee269e0dd40bcf0
X-Google-Attributes: gid1593cb,gid1054ea,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news2.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!nx02.iad01.newshosting.com!newshosting.com!novia!newsfeed.yul.equant.net!news-santiago!helcaraxe.dcc.uchile.cl!not-for-mail
From: "Sebastian E. Castro Avila" <secastro@dichato.dcc.uchile.cl>
Newsgroups: chile.comp.programacion,chile.comp.unix
Subject: Re: PHP: Mitos o realidades?
Followup-To: chile.comp.programacion
Date: Mon, 23 Jun 2008 23:46:16 +0000 (UTC)
Organization: DCC Universidad de Chile
Lines: 108
Message-ID: <g3pck8$1m1$1@helcaraxe.dcc.uchile.cl>
References: <g3k2so$gb$1@news.nivel5.cl>
NNTP-Posting-Host: 192.80.24.4
X-Trace: helcaraxe.dcc.uchile.cl 1214264776 1729 192.80.24.4 (23 Jun 2008 23:46:16 GMT)
X-Complaints-To: newsmaster@dcc.uchile.cl
NNTP-Posting-Date: Mon, 23 Jun 2008 23:46:16 +0000 (UTC)
User-Agent: tin/1.8.3-20070201 ("Scotasay") (UNIX) (Linux/2.6.23-gentoo-r8 (i686))