javier ramirez wrote:
no tiene porqué. Si al cargar el user has lanzado los includes
necesarios, no estás ejecutando más que la consulta inicial a la db. De
hecho tal cuál funciona Rails ahora mismo, aunque uses includes vas a
acabar teniendo n consultas (una por cada tabla asociada) asà que serÃa
lo mismo.
O no me he explicado, o no me has entendido: mi propuesta es guardar una
copia del dato en la propia tabla (cachearlo permanentemente, vamos), y
eso supone que está accesible en una única consulta.
El rendimiento (que no parece crÃtico en esta aplicación).
Creo que es interesante dedicar tiempo a que tu código quede bien
estructurado e incluso en algunas ocasiones aunque resultase en un
rendimiento peor (que no tiene porqué ser el caso esta vez)
Emili Parreño wrote:
La solucion que te ha comentado Javier, a parte de estar mucho mejor
que la tuya en cuanto, no solo a “belleza del codigo” sino a
estructuracion, no es mas lenta que la tuya, pruebalo.
De la mejor estructuración no tengo ninguna duda, y quizá sea cierto que
aquà el rendimiento no vaya a ser crÃtico (aunque a mà me gusta
optimizar el rendimiento por sistema, aun sin ser crÃtico). Pero en
cuanto a rendimiento, es algo que ya he probado, y no con logs, sino con
aplicaciones reales, http://www.verema.com/ y http://www.rankia.com/ ,
de más de millón y medio de páginas al mes…
Verema está hecha “bien estructurada”, pero me paso el tiempo
consultando para cada contenido cuál es el nombre del subtipo (vÃa
subtipo_id) y el nombre del autor (vÃa usuario_id). Para Rankia, estos
datos y algunos pocos más están cacheados en la tabla que frecuentemente
los consulta, rompiendo la “estructuración”… pero la diferencia de
resultados que da newrelic es apreciable:
Tiempo de respuesta: 160 => 105
Consumo de CPU, memoria y BBDD: 9,5%, 582 MB y 19,3% => 6,6%, 358 MB y
9,8%
(Datos de la media semanal del último informe de newrelic; ambas están
alojadas en la misma máquina y con la misma configuración)
Aparte de que no necesito que newrelic lo diga… con ver los logs de
desarrollo y las consultas a BBDD que se están generando en cada caso,
ya se nota.
s2