Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[SOLUCIONADO] Clase estática Vs. include

Estas en el tema de Clase estática Vs. include en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy barajando en hacer un menu de dos formas: Con una clase estática Con un include Para ello me he decidido a hacer pruebas de ...
  #1 (permalink)  
Antiguo 28/08/2012, 07:04
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Clase estática Vs. include

Estoy barajando en hacer un menu de dos formas:

Con una clase estática
Con un include

Para ello me he decidido a hacer pruebas de velocidad y sorprendentemente es más rápido con la clase estática.

¿Alguién sabe por qué?

Fichero newfile.php

Código PHP:
<ul>
    <
li><a>a</a></li>
    <
li><a>b</a></li>
    <
li><a>c</a></li>
    <
li><a>d</a></li>
    <
li><a>e</a></li>
    <
li><a>f</a></li>
</
ul>
<
ul>
    <
li><a>a</a></li>
    <
li><a>b</a></li>
    <
li><a>c</a></li>
</
ul>
<
ul>
    <
li><a>a</a></li>
    <
li><a>b</a></li>
    <
li><a>c</a></li>
    <
li><a>d</a></li>
</
ul>
<
ul>
    <
li><a>a</a></li>
    <
li><a>b</a></li>
    <
li><a>c</a></li>
    <
li><a>d</a></li>
</
ul>
<
ul>
    <
li><a>a</a></li>
    <
li><a>b</a></li>
</
ul
Fichero pruebas.php

Código PHP:
class Menu
{
    public static 
$ArrayMenu=    array(1=>array(    'nombre'=>'1',
                                                
'carpeta'=>'1',
                                                
'sub'=>array('a','b','c','d','e','f')),
                                      
2=>array(    'nombre'=>'2',
                                                
'carpeta'=>'2',
                                                
'sub'=>array('a','b','c')),
                                      
3=>array(    'nombre'=>'3',
                                                
'carpeta'=>'3',
                                                
'sub'=>array('a','b','c','d')),
                                      
4=>array(    'nombre'=>'4',
                                                
'carpeta'=>'4',
                                                
'sub'=>array('a','b','c','d')),
                                      
5=>array(    'nombre'=>'5',
                                                
'carpeta'=>'5',
                                                
'sub'=>array('a','b'))
                                      );

    
    
    public static function 
MostrarMenu()
    {
        foreach(
self::$ArrayMenu as $numero => $array){
            ${
$numero}="<ul>";
            foreach (
$array["sub"] as $letra){
            ${
$numero}.= "<li><a>$letra</a></li>";
            }
            
$total.=${$numero}."</ul>";
        }
        return 
$total;
    } 
}

$_1microtime(true);
echo 
Menu::MostrarMenu();
echo 
microtime(true)-$_1."<br>"// Resultado 0.00015616416931152


$_2=microtime(true);
include 
'newfile.php';
echo 
microtime(true)-$_2// Resultado 0.00096416473388672 
  #2 (permalink)  
Antiguo 28/08/2012, 07:19
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Clase estática Vs. include

Crear una clase menú de esa forma, que sentido tiene ?, has pensado en la unidad que estas manejando y la cantidad de 0 después de la coma que tiene el resultado que muestras ? y para hacer justo el bench separa la clase en otro fichero y has el include.


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 28/08/2012, 07:53
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Clase estática Vs. include

Cita:
Iniciado por masterpuppet Ver Mensaje
has pensado en la unidad que estas manejando y la cantidad de 0 después de la coma que tiene el resultado que muestras ?
Saludos.
No entiendo

Está claro que la clase va un fichero aparte. De hecho lo he probado incluyendo el archivo de la clase y los tiempos están calculados de esta manera. Pero para hacer el ejemplo más sencillo he metido la clase en el script de pruebas.

Lo que quiero es incluir el menú en todos los scripts y estaba dudando entre meterlo en un clase o un include con html puro.
  #4 (permalink)  
Antiguo 28/08/2012, 08:37
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Clase estática Vs. include

Estamos hablando de milésimas de micro-segundos, honestamente yo no me preocuparía por algo así.

Porque es mas lento el include con html puro, realmente no lo se, pero no hay mucho para hacer en ese caso, así funciona el parser...

Con respecto a cual utilizar, que diferencia hay entre el html puro y tu clase Menu ?, yo no veo ninguna, si quieres crear una clase para el manejo de menus te dejo una referencia a un componente que talves de sirva de referencia o mejor aun, puedes utilizarlo KnpMenu.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 28/08/2012, 08:52
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años
Puntos: 95
Respuesta: Clase estática Vs. include

Me parece bastante extraño la verdad.
Igualmente, la clase la deberás incluir de alguna manera, a no ser que hagas todo el código en un "mismo sitio" (que evidentemente no es lo adecuado).

Por curiosidad, prueba con require, tardará menos que include.
De todas formas, estas cosas no importan en absoluto, ya que estás entrando en una optimización poco funcional. Después de hacer todo este trabajo basta con que uses una función en vez de otra (vease include vs require) para que te consuma más que todas esas migajas que has optimizado.

Céntrate en las optimizaciones importantes.
__________________
Web Designer.
Themes-Up!, próximamente
  #6 (permalink)  
Antiguo 28/08/2012, 08:57
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Clase estática Vs. include

La historia es que este menu es un ejemplo muy simple, pero si el menu se extiende mucho puede que la diferencia de tiempos sea mayor.

Es que hacer un include de in código html me parece una guarrada y ahora más viendo el aspecto de velocidad.
  #7 (permalink)  
Antiguo 29/08/2012, 04:02
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Clase estática Vs. include

Ya he probado con un menú mayor y la diferencia de tiempos varía según lo que se quiera mostrar. Unas veces la clase estática es más rápida y otras el include así que tanto monta, monta tanto.

Etiquetas: clase, class, include, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.