iidec / Integra.Space.Language-upstream

Lenguaje de consulta que permite el acceso a datos en tiempo real
0 stars 0 forks source link

Edición de consultas EQL #57

Open OscarCanek opened 7 years ago

OscarCanek commented 7 years ago

Cada vez que un stream es creado se crea un assembly y un nuevo appdomain donde se ejecutará dicho assembly.

Cada vez que se realice un cambio a la consulta de un stream se debe crear un nuevo appdomain para contener el nuevo assembly actualizado y se debe descargar el appdomain viejo.

La configuración debe estar optimizada para soportar múltiples appdomains dentro de la misma aplicación.

OscarCanek commented 7 years ago
  1. El siguiente es un ejemplo de como realizar la configuración para que sea optima para utilizar multiples appdomains.

Ejemplo

  1. El siguiente ejemplo muestra como ejecutar código en diferentes appdomains.

Ejemplo

OscarCanek commented 7 years ago

Las pruebas realizadas para el punto 1 demostraron que la configuración dada en el ejemplo si aumenta rendimiento considerablemente.

Prueba

La prueba consiste en levantar cien appdomains, sin configuración y con la configuración del ejemplo del punto 1

Sin la configuración del ejemplo la prueba no pudo terminarse porque la memoria consumida se eleva a gigas y al rededor de los cuarenta appdomains creados la aplicación genera una excepción, sumado a esto el tiempo tomado para llegar ese numero de appdomains fue de minutos.

image

Ahora con la configuración del ejemplo la prueba pudo terminarse en alrededor de 100 segundos, es decir, un segundo por cada appdomain creado y con las siguiente cantidad de memoria utilizada.

image

image

Como se muestra en las imágenes el rendimiento mejora considerablemente con la configuración del ejemplo ademas que la prueba terminó sin ningún problema.