Entradas

Mostrando las entradas de octubre, 2005

HOW TO: Habilitar el cache de sentencias en una aplicación GeneXus.

La habilitación de cache de sentencias en aplicaciones Genexus es una tarea muy sencilla, pero que hay que realizarla con cuidado para poder tener buenos resultados.

Los resultados, en mejora de performance, han sido muy buenos, bajando en 30% los tiempos de ejecución de algunos procesos.

Lo primero que hay que hacer, es realizar una clasificación de la tablas que posee mi sistema, según la frecuencia con que se cambian los registros de las mismas. También es importante ver que tanto me afectaría si un registro de la misma es modificado y cuanto puede esperar el resto de la aplicación, para ver los resultados.

Frecuencia de Cambio

MUY BAJA - Tablas de parámetros / Metadatos que no se modifican
BAJA - Datos básicos de baja volatilidad y baja criticidad (Sucursales, Empresas, Rubros, productos)
ALTA - Pueden ser productos, empresas, etc (aunque tengan un ritmo de actualizacion baja, son criticos)
MUY ALTA - Movimientos de stock, documentos, logs, etc, No cacheable, son la mayoria de las tablas

Experimentos en el area de Software

Por mi trabajo, me toca muchas veces hacer "experimentos de software". Son varios los tipos de experimentos que tenemos que hacer, pero algunos ejemplos de los mismos son :
Compracion de componentes de software (drivers, rutinas, frameworks, etc)
Compracion de metodologias de desarrollo
Compracion de herramientas
Automatizacion de procesos manuales
etc.

En todos estos procesos, existe algo comun, y es que se quiere de ellos aprender y tratar de mejorar algo, que en nuestro caso es el "proceso de desarrollo de aplicaciones".

En Concepto hemos definido la utilizacion de un "metodo cientifico", para la realizacion de dichos experimientos.

Por lo tanto, todas las pruebas, deberan ser documentadas, para que un tercero (dentro de la organizacion y en algunos casos afuera) pueda repetir la misma y comprobar los resultados.
Tambien deberan en lo posible brindar elementos cuantitativos, que permitan a quienes no participaron en la prueba, tomar decisiones en para ver…

Comparación de Drivers JDBC y ADO.NET

Imagen
Me tocó optimizar una aplicación Java, desarrollada con Genexus.
Para lo mismo comparé la corrida de un programa que hace:

Insert n registros
Update n registros
Delete n registros

y repite los resultados para 2, 200, 2000 y 20000 registros.



Los resultados estan en segundos.

Claramente el jdbc driver con mejor tiempo de respuesta fue el jTDS, seguido por el de inet.
Como comparacion, puse ejecuté el ejemplo con .NET y ADO.NET, y los tiempos fueron buenos para pocos registros, pero empeoraron bastante a medida que aumentaron la cantidad de registros.