Closed milo19980525 closed 1 week ago
En este apartado se comentará todo lo relacionado a la implementación de Go Routines en el Micromid de Formulación, teniendo en cuenta el cuadro comparativo por petición en cada uno de los servicios o 'helpers'.
En este servicio es posible aplicar Go Routines para varias peticiones, sin embargo, hay otras peticiones que pertenecen a consultas tipo PUT; por ende, según los lineamientos no es recomendable usar rutinas para este tipo de consultas. (Líneas 126, 229, 263).
En contraste, para la petición PonderacionActividades()
fue exitosa la implementación de rutinas y se procede a comparar el resultado actual de la consulta con el resultado original sin rutinas:
Original:
Go Routines:
Como podemos notar ambas peticiones responden de igual forma, por ende, podemos proceder a realizar un cuadro comparativo con 10 iteraciones de tiempo para identificar si vale la pena la implementación de Go Routines en la petición:
Petición utilizada: http://localhost:8082/v1/formulacion/actividad/ponderacion/65bf03d30c1fc945b06aee5b | Iteración | Tiempo Original (ms) | Tiempo Go Routines (ms) |
---|---|---|---|
1 | 361.98 | 407.44 | |
2 | 237.15 | 235.70 | |
3 | 233.65 | 246.67 | |
4 | 232.25 | 241.93 | |
5 | 237.41 | 235.73 | |
6 | 235.25 | 241.50 | |
7 | 237.42 | 238.10 | |
8 | 243.93 | 258.80 | |
9 | 233.51 | 244.40 | |
10 | 235.62 | 235.06 | |
Promedio | 248.82 | 258.53 |
Ahora bien, como se puede apreciar la implementación de Go Routines no fue beneficiosa para la petición con una diferencia negativa de -9.71 ms. Por ende, no se ve necesaria la implementación de rutinas, ya que el resultado se retorna en un tiempo similar o superior a la lógica sin rutinas.
Por otro lado, para la petición Planes()
fue exitosa la implementación de rutinas y se procede a comparar el resultado actual de la consulta con el resultado original sin rutinas:
Original:
Go Routines:
Como podemos notar ambas peticiones responden de igual forma, pero en orden diferente; sin embargo, esto no esta mal, ya que para este tipo de petición no importa el orden de los planes. Por ende, podemos proceder a realizar un cuadro comparativo con 10 iteraciones de tiempo para identificar si vale la pena la implementación de Go Routines en la petición:
Petición utilizada: http://localhost:8082/v1/formulacion/planes | Iteración | Tiempo Original (ms) | Tiempo Go Routines (ms) |
---|---|---|---|
1 | 13050 | 1003 | |
2 | 12752 | 875.93 | |
3 | 12784 | 811.96 | |
4 | 12837 | 796.39 | |
5 | 12844 | 822.48 | |
6 | 12834 | 850.53 | |
7 | 12756 | 790.71 | |
8 | 12854 | 800.38 | |
9 | 12755 | 797.59 | |
10 | 12773 | 772.73 | |
Promedio | 12823.9 | 832.17 |
Ahora bien, como se puede apreciar la implementación de Go Routines fue beneficiosa para la petición con una diferencia de 11991.73 ms. Sin embargo, hay que tener en cuenta que estas pruebas fueron realizadas localmente y por tanto los tiempos son relativos.
En este servicio es posible aplicar Go Routines para varias peticiones, sin embargo, hay otras peticiones que pertenecen a consultas tipo PUT y POST; por ende, según los lineamientos no es recomendable usar rutinas para este tipo de consultas. (Líneas 539, 572, 954, 987, 1071, 1104, 1168, 1201, 1364).
En contraste, para la petición GetProyectoId()
fue exitosa la implementación de rutinas y se procede a comparar el resultado actual de la consulta con el resultado original sin rutinas:
Original:
Go Routines:
Como podemos notar ambas peticiones responden de igual forma, por ende, podemos proceder a realizar un cuadro comparativo con 10 iteraciones de tiempo para identificar si vale la pena la implementación de Go Routines en la petición:
Petición utilizada: http://localhost:8082/v1/inversion/proyecto/65bf03d30c1fc945b06aee5b | Iteración | Tiempo Original (ms) | Tiempo Go Routines (ms) |
---|---|---|---|
1 | 976.23 | 537.22 | |
2 | 728.76 | 428.51 | |
3 | 723.07 | 435.11 | |
4 | 767.79 | 419.05 | |
5 | 746.83 | 409.00 | |
6 | 765.63 | 399.46 | |
7 | 733.68 | 413.84 | |
8 | 709.85 | 411.33 | |
9 | 750.20 | 406.14 | |
10 | 770.16 | 405.91 | |
Promedio | 767.22 | 426.56 |
Ahora bien, como se puede apreciar la implementación de Go Routines fue beneficiosa para la petición con una diferencia de 340.66 ms. Sin embargo, hay que tener en cuenta que estas pruebas fueron realizadas localmente y por tanto los tiempos son relativos.
Por otro lado, para la petición GetMetasProyect()
fue exitosa la implementación de rutinas y se procede a comparar el resultado actual de la consulta con el resultado original sin rutinas:
Original:
Go Routines:
Como podemos notar ambas peticiones responden de igual forma, por ende, podemos proceder a realizar un cuadro comparativo con 10 iteraciones de tiempo para identificar si vale la pena la implementación de Go Routines en la petición:
Petición utilizada: http://localhost:8082/v1/inversion/proyectos/63ed9908ccee4953c184a651/metas | Iteración | Tiempo Original (ms) | Tiempo Go Routines (ms) |
---|---|---|---|
1 | 605.65 | 524.09 | |
2 | 392.37 | 333.87 | |
3 | 342.22 | 337.49 | |
4 | 353.62 | 358.93 | |
5 | 428.62 | 335.22 | |
6 | 423.05 | 344.97 | |
7 | 389.46 | 330.37 | |
8 | 368.79 | 334.49 | |
9 | 414.02 | 335.46 | |
10 | 438.06 | 327.18 | |
Promedio | 415.59 | 356.21 |
Ahora bien, como se puede apreciar la implementación de Go Routines fue beneficiosa para la petición con una diferencia de 59.38 ms. Sin embargo, hay que tener en cuenta que estas pruebas fueron realizadas localmente y por tanto los tiempos son relativos.
formulacion_mid: https://github.com/udistrital/planeacion_formulacion_mid/pull/10
Se requiere continuar con la aplicación de rutinas en Go, a partir de lo desarrollado en #1064 , #1128 y #1132 .
Especificaciones técnicas
Subtareas
Criterios de aceptación
Requerimientos
Dependencias
Definition of Ready - DoR
Definition of Done - DoD - Desarrollo