|
|||||||||||||
| Registrarse | FAQ/Ayuda | Posts de hoy | Tags | ||||||||||
|
| |||
| Tags: Ninguna | |||
|
|
|
LinkBack (1) | Herramientas |
|
|
#1
|
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Me cago en php5 y POO
El cuento es el siguiente:
Las visitas y las ganancias monetarias bajaron a un 50% La diferencia entre una pagina entregando los mismos datos desde php5 con POO es bastante grande Mientras en php5 con programación a la antiguita, es decir con funciones e includes ocupa poco mas de 1 MB Lo mismo, con php5, pero programacion orientada a Objetos (Codeigniter) poco mas de 5MB Algún tip generico de ¿"Dónde mirar"? Empecé por lo siguiente: 1.- Desactive Mod_security (los procesos corren bajo mi usuario y si mi usuario sobre pasa x promedio me matan el proceso) 2.- Active Cache para algunas querys, en lugar de hacer query en cada consulta, genero un archivo html guardado en X carpeta, lo leo, y comparo la fecha actual, entonces en lugar de leer mysql, hacer comparaciones, generar codigo html, simplemente cargo el archivo logre que la pagina cargue más rápido, pero no ha bajado el nivel de MB consumidos, así que sospecho que el Core de CodeIgniter es el que ocupa tanto Los proximos pasos será hacer un Benchmark entre funciones alternativas a las que tengo actualmente, por ejemplo para leer un archivo HTML e incluirlo en una pagina hay como 7 funciones distintas y con diferencias significativas en el uso de memoria. PD: ahora prefiero mi programación Old Style XD PD2: Voy a verificar que no este cargando librerias innecesarias |
|
|
|
|
|
#2 |
|
Zorrón!
|
Re: Me cago en php5 y POO
el echo de utilizar un framework de desarrollo no implica mejorar la performance... un framework nos entrega funcionalidades para desarrollar más rápido pero hay un montón de cosas que no necesitamos, quizás a la antiguita sea la solución o un framework a medida.
salu2 |
|
|
|
|
|
#3 | |
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Re: Me cago en php5 y POO
Quote:
Voy a modificar el CI para pedir librerias on demand |
|
|
|
|
|
|
#4 |
|
enajenao
Moderador
![]() |
Re: Me cago en php5 y POO
mm no sé en realidad la relación del uso de PHP5 y POO con los problemas de rendimiento y acceso provisto por un Framework.. yo estudié el Framework Symfony entero y es muy bueno para desarrollar rápidamente un software Web en PHP, pero tiene esa desventaja respecto de la memoria que usa y la cantidad abrumante de librerías que carga aunque no uses ni el 10% de todo..
Sinceramente para lo que me ha tocado hacer, le he hecho el quite a los Frameworks programando con metodologías y diseños de software propios (usando PHP5 y POO por lo demás), aunque los estudio para el caso que requiera usarlos o me obliguen.. jeje.. |
|
|
|
|
|
#5 | |
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Re: Me cago en php5 y POO
Quote:
por lo visto tendre que hacer eso, programarlo yo, si odio usar CMS, porque no tengo un control completo sobre lo que estoy haciendo, usar frameworks me esta provocando los mismos problemas |
|
|
|
|
|
|
#6 |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: Me cago en php5 y POO
POO no es el culpable
Revisa __autoload() (muuuuuy útil) pero disminuye performance igual, ya que trabaja mucho con el disco. Ocupar 5MB por cada request es demasiado, el CMS que hice en la empresa fluctúa entre los 800KB y como máximo 2MB, siempre y cuando no esté trabajando con archivos. Claro que es mezcla POO con procedural. Tengo ganas de liberarlo a público en general, pero encuentro que todavía le falta un poco. Voi a revisarlo a ver si está todo bien y lo libero Saludos. |
|
|
|
|
|
#7 |
|
Zorrón!
|
Re: Me cago en php5 y POO
unreal si lo liberas la idea deberia ser revisarlo y recibir aportes para mejorar lo que se pueda mejorar, quizás sea mejor de lo que tiene en este momento tokugawa.
salu2 |
|
|
|
|
|
#8 | |
|
enajenao
Moderador
![]() |
Re: Me cago en php5 y POO
Quote:
|
|
|
|
|
|
|
#9 | ||
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Re: Me cago en php5 y POO
Quote:
---------- Post added at 22:14 ---------- Previous post was at 22:12 ---------- Quote:
Una lata tener que preocuparme de la perfomance, cuando debiera estar preocupado netamente de la programación, no de las falencias del FrameWork |
||
|
|
|
|
|
#10 |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: Me cago en php5 y POO
quiero dejarle 2 cosas antes de liberarlo:
1.- Un updater automático de la db en caso de modificaciones a la db. 2.- Poder ponerle themes a distintas páginas dentro del mismo dominio, así por ejemplo: ejemplo.com/hola/ -> se va a un skin. ejemplo.com/chao/ -> se va a otro skin. Otras cosas que tengo pendiente son alias o manejo de multidominios, y mejoras en el manejo de paso de parámetros, que actualmente la implementación en htaccess que tengo no me gusta. También me gustaría montar un sitio donde la gente puede ir dejando plugins o páginas que hagan distintas cosas, y un método para poder instalar estos plugins de forma segura, es decir que se pueda tener control sobre cuáles páginas están activas y cuáles no. También un sistema de permisos global con un esquema EAV en la db está pendiente Teniendo listo eso lo lanzo Nah, cacho que lo iré haciendo a la marcha, pero por lo menos quiero terminar lo más urgente que son los 2 primeros puntos.Saludos. |
|
|
|
|
|
#11 |
|
Usuario
Registrado: noviembre-2009
Posts: 292
![]() |
Re: Me cago en php5 y POO
Debe ser un comedor de recursos Codeigniter, lo probé hace tiempo y no me gusto para nada, hora siempre POO tiene peor rendimiento que procedural, en cualquier lenguaje, php no se salva de esto, en un cms que tengo el consumo procedural no pasaba de 600KB, y con POO/procedural ahora en promedio son 800KB y maximo son 1.4MB
@unreal4u, el cms que hice tiene esa 2 características que intentas hacer. |
|
|
|
|
|
#12 |
|
Bassist
Registrado: noviembre-2009
Ubicación: Santiago
Posts: 216
![]() |
Re: Me cago en php5 y POO
Que asco de mundo! O sea que php poo tiene peor rendimiento que php estructurado??? Un gran cueeeck!!!
|
|
|
|
|
|
#13 |
|
enajenao
Moderador
![]() |
Re: Me cago en php5 y POO
y con qué función miden el consumo de los scripts??? con memory_get_usage() ??
|
|
|
|
|
|
#14 | |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: Me cago en php5 y POO
Quote:
escálalo y revisa cuál tiene mejor rendimiento xD de ahí hablamos @galansinchance : esta es la función que ocupo yo: Código PHP:
@el_dva : es refácil de implementar pero no he tenido el tiempo Hoy estuve trabajando un poco pero no avancé nada A ver si la otra semana avanzo un poco más.Saludos. |
|
|
|
|
|
|
#15 |
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Re: Me cago en php5 y POO
lo mismo que unreal, pero en bytes, para verifiar pequeñas variaciones, el mismo script tiene pequeñas variaciones haciendo la misma tarea, supongo que son por la carga del server, pero entre algo de 1mb, con 25.000 datos en la base de datos y 800 usuarios unicos al dia y 8mb hacendo la misma tarea, y la misma carga, es como musho
Pero supongo que Unreal habla de cargas reales, como la de chw o fayerwater, porque las 800 visitas unicas que tengo al dia son la nada misma |
|
|
|
|
|
#16 | |
|
Usuario
Registrado: noviembre-2009
Posts: 292
![]() |
Re: Me cago en php5 y POO
Quote:
Código PHP:
Ahora volviendo al tema, también en un sistema hay que ver cual es la carga reservada de php al arrancar, por lo general php reserva 10MB, en modo cgi y 2MB en modo modulo para apache.memory_get_usage() o memory_get_peak_usage() solo entregan la memoria usada por el script. ![]() |
|
|
|
|
|
|
#17 |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: Me cago en php5 y POO
Estuve investigando este tema y rectifico mi respuesta:
PHP con OOP va a consumir más memoria. Básicamente, porque lo primero que se hace al hacer un include es leer todo ese archivo, parsearlo, compilarlo y finalmente ejecutarlo. El único problema es que OOP es más código que unas funciones simples y por lo tanto, el peso total se ve incrementado por este hecho. Supongamos que tenemos: 1.- index.php de 200bytes 2.- hola.class.php de 500bytes 3.- chao.class.php de 400bytes En total, ese script ocupará: 1100bytes al leer las fuentes, más X-bytes más al compilarlo, donde X es un número cercano a 1100. Además de esto, tiene que levantarse el server de PHP, que puede ir desde 30kbytes hasta el infinito y más allá dependiendo de qué funciones estemos llamando, la complejidad de nuestro programa y otras variables desconocidas por este humilde servidor. Ahora bien, no se puede hablar de que un script sea más rápido o más lento con OOP, si es que hubiera alguna diferencia en tiempo, sería despreciable: eso depende netamente de la mano del programador y qué hace el script: una conexión a una base de datos va a demorar ya sea bajo OOP o procedural, lo mismo corre si estamos trabajando con archivos (disco es muuuuuuucho más lento que ram). Mucha mejor solución sería instalar algo como APC que crea una versión compilada y la deja en caché, de forma que no se tenga que parsear y compilar en cada request, con eso aumentamos la eficiencia en cerca de un 80% y se disminuye drásticamente el uso de memoria al no tener que leer y parsear. Ya si queremos ir más allá, habrá que instalar Hip-Hop for PHP, que crea una versión en C++ de nuestra aplicación y que acelera hasta en un 50% adicional a la instalación con APC, pero esto nuevamente depende de la mano del programador y qué hace el programa. Por último, el uso de la memoria no lo es todo: Linux predeterminadamente ocupa toda la memoria RAM disponible e intenta alojar la mayor cantidad de datos posibles en ella, es gracias a ello que es tan rápido (comparado con windows que intenta ocupar la menor cantidad posible). Saludos. |
|
|
|
|
|
#18 | |
|
Gordo en rehabilitación
![]() Registrado: septiembre-2006
Ubicación: -37.459999,-72.36
Posts: 7.467
![]() |
Re: Me cago en php5 y POO
Quote:
|
|
|
|
|
|
|
#19 |
|
enajenao
Moderador
![]() |
Re: Me cago en php5 y POO
@unreal y qué tal anda Zend??
lo que es yo prefiero mil veces trabajar con POO, pienso que es mejor sacrificar un poco de rendimiento para tener una apliación más portable, escalable y mantenible, que he tenido que trabajar con software de otros que no eran ni fu ni fa, y extraer una funcionalidad para integrar tecnologías es un parto.. ---------- Post added at 18:55 ---------- Previous post was at 16:03 ---------- @el_dva genial, pero para procesar estadísticas, agrupamientos, etc, cómo lo haces?? digo como para parsear elementos del tipo GROUP BY, o SELECT AVG,MAX,MIN, etc.. |
|
|
|
|
|
#20 | |
|
Usuario
Registrado: noviembre-2009
Posts: 292
![]() |
Re: Me cago en php5 y POO
Quote:
Ejemplo: Código PHP:
Código PHP:
|
|
|
|
|
|
| Herramientas | |
|
|
|||||