Necesito ayuda sobre Optimización


([N1] roberto) #1

Hola Chicos, ahí va una pregunta sobre optimización:

Estoy creando una aplicación con usuarios y tengo que guardar unos parámetros en memoria para utilizarlos continuamente.
Creo que podría hacerlo de varias formas. Por ejemplo, tengo que tener disponible la configuración para el envío de correo electrónico, cuando
el usuario quiera enviar un mail, obtengo los parámetros de su configuración y realizo el envío.Teniendo en cuenta que sean 10 parámetros podría hacer:

1.-Típico, 10 variables globales que carguen la configuración al acceder a la aplicación.
2.-Tabla en memoria con 10 campos rellenable con tubo ficha desde la tabla usuario y donde accedo cuando necesite
3.-Variable, exclusivamente con el ID del usuario y poner punteros a este usuario desde las tablas donde vaya a usarlo.

Preguntas:

Teniendo en cuenta ahorra dar de alta multitud de variables globales y hacer el tubo ficha y acceder a la tabla en memoria cada vez
me inclino por la última opción.
Esta última ahorra toda la programación con poner un puntero. Pero a la hora de capturar los datos en cliente servidor
me gustaría saber cual de las tres opciones sería más aconsejable por velocidad y demás opciones.

Hay que tener en cuenta que los datos de configuración y parámetros no se cambian continuamente es un registro existente,
lo digo por el caché y esas cosas.

¡¡Espero vuestras opiniones!!!

Gracias y saludos.


([N4] eic) #2

Hola, Roberto.

Mientras no sean muchos parámetros, tener 10 variables globales (en memoria, por supuesto) no te va a suponer pérdida de rendimiento. Se pueden usar como contenido inicial en campos de otras tablas, y son fáciles de mantener. Sólo tienes que tener cuidado si quieres usarlas en procesos en 3º plano (deberás pasar su valor al proceso).

Otra aproximación es tener sólo guardado en variable global el ID del usuario y, cada vez que vayas a usar esos datos, hacer un cargar lista directamente de la tabla de usuarios, que no será grande y que, además, estará cacheada en local.

En cuanto a rendimiento, creo que ambas soluciones son relativamente parecidas y fáciles de mantener.


([N4] carlitos) #3

Si lo que quieres son los parámetros de envío de un mail, yo tengo una tabla en disco con esos parámetros, tal como viene diseñado a vsendmail.
no me parece que penalice el rendimiento…