Variables Globales, Tablas en Memoria ó JSON, un pequeño BenchMarck

Una de las primeras dudas cuando se comienzan a crear procesos o búsquedas con Velneo es «donde almaceno valores global mente ?», la solución mas obvia para todos es crear una variable global del tipo que se necesite y almacenar los valores requeridos allí (por supuesto todo esto en memoria); pero algunos detestamos la creación de un objeto solo para mantener el estado de un determinado control y queremos poder crear «al vuelo» estas variables globales, pues bien yo me he econtrado con dos opciones:

1. Tabla de Persistencia en memoria:

Dado que hoy por hoy V7 nos permite tener tablas que se almacenan en la Ram del  cliente, bien nos podemos crear una tabla que se encargue de gestionar valores globales al applicativo que solo sean relevantes para la session en curso del vClient.

Nota: el termino «persistencia en Memoria» aplicado en este contexto en primera instancia se lo escuche a Jorge Hontoria el cual en primer momento no tuvo mucho sentido pero ya despúes lo encontre.

Como puede verse la tabla almacena valores de varios tipos organizados por una clave y se accesa mediante las funciones GET_VAR y SET_VAR, para leer y escribir valores en la tabla, asignandole a cada variable una clave y un tipo.

Pros:

  • Creacion de variables globales al vuelo.
  • Almacena y entrega el tipo nativo de los campos de v7.
  • Fácil consulta de los todos los valores globales actuales.

Contras:

  • No es tan rapida para lectura y escritura como las varibles globales nativas.

2. Almacenamiento tipo JSON:

Otra opcion a considerar es almacenar los datos con un formato Json en un sola varible global, usando las bondades de las instrucciones de scripts para almacenar y leer los valores de dicha variable.

Como se observa, lo que hacen los procesos basicamente es tomar la variable global y evaluarla, despúes puede agregarle un valor o tomarlo usando las instrucciones Javascript standar, en caso de grabar un nuevo valor el objeto JSON completo es devuelto y almacenado de nuevo en la variable como una cadena.

Pros:

  • Creación de variables al vuelo.
  • Extremadamente simple solo es 1 variable y dos funciones.
  • Lectura rapida del estado actual de todas las varibles del aplicativo.
  • Menos uso de memoria (no sabria como medirlo pero seguro que pesa menos que una tabla en memoria)

Contras:

  • Menos rapida que la asignación de varibles globales.
  • Todos los valores son almacenados como texto asi que tal vez en algunos casos se den problemas de conversión de tipos (No he probado esta opción a fondo)

Y la velocidad que tal ?

Como han visto he afirmado que las opciones anteriores no son tan veloces para la lectura y escritura como las variables globales en memoria, la razón de esto es que he hecho un pequeño benchmark para lo cual he creado un pequeño aplicativo, el cual lee y almacena diferentes tipos de valores en los tres formatos durante 1000 iteraciones, los resultados son:

Como puede apreciarse las variable glables son mas rapidas en lectura y escritura, y el rendimiento de JSON y Tabla en Memoría es bastante parejo con lo que cada cual podrá escoger cual la parece la opción mas adecuada para sus desarrollos.

Quieres el app para revisar como trabajar estas metodologías y además el mini-BenchMark, claro descargalo aqui

Saludos,

www.profitsoft.co

Deja un comentario