1
00:00:00,150 --> 00:00:00,960
Continuamos.

2
00:00:01,080 --> 00:00:06,030
Vamos a ver una característica importante del Madrid que permite que se ejecute, que se procesen los

3
00:00:06,030 --> 00:00:13,110
datos del flujo de forma paralela mediante un pool de Dredd va a procesar el stream y esto hace que

4
00:00:13,110 --> 00:00:17,400
se ejecute mucho más rápido, pero también va a tener un costo en rendimiento.

5
00:00:17,790 --> 00:00:23,080
Vamos a trabajar, vamos a cerrar todo, vamos a abrir el ejemplo.

6
00:00:23,790 --> 00:00:31,560
Ejemplo Stream List Tu stream lo vamos a copiar mejor lo copiamos y lo renombrados para que lo podemos

7
00:00:31,560 --> 00:00:32,130
modificar.

8
00:00:32,550 --> 00:00:34,950
Y acá ejemplo stream parallel.

9
00:00:38,320 --> 00:00:39,330
Los datos son lo mismo.

10
00:00:39,430 --> 00:00:42,550
Lo vamos a mantener, lo que sí íbamos a cambiar un poco el flujo.

11
00:00:42,640 --> 00:00:49,330
El ejemplo primero, la idea de retornar un string con el dato encontrado con el nombre, por ejemplo

12
00:00:49,390 --> 00:00:49,900
Brus.

13
00:00:50,350 --> 00:00:55,000
Entonces vamos a modificar este map que convierte en minúscula.

14
00:00:55,090 --> 00:00:58,240
Lo podríamos quitar también vamos a quitar el PIC por ahora.

15
00:00:58,870 --> 00:01:03,270
Entonces acá vamos a utilizar el Find Henny Punto.

16
00:01:03,670 --> 00:01:07,970
Y si no lo encuentra or else retornamos un string vacío.

17
00:01:08,290 --> 00:01:10,070
No se encontró bien el tipo de dato.

18
00:01:10,090 --> 00:01:13,210
Como esto retorna un string acá cambiamos

19
00:01:16,570 --> 00:01:17,170
nombres.

20
00:01:17,470 --> 00:01:21,550
Bien, tenemos el flujo y por supuesto, acá imprimimos nombres.

21
00:01:22,960 --> 00:01:27,460
Bien, vamos a tomar el tiempo de inicio y fin en la ejecución del string.

22
00:01:27,790 --> 00:01:32,020
Entonces por acá un long tiempo uno de uno igual.

23
00:01:32,890 --> 00:01:36,730
Si un punto carran time en milisegundos.

24
00:01:37,570 --> 00:01:41,580
Y después acá long de dos.

25
00:01:42,040 --> 00:01:46,060
Igual lo mismo current time en milisegundos.

26
00:01:46,150 --> 00:01:46,810
Perfecto.

27
00:01:46,900 --> 00:01:48,400
Y por acá un shout.

28
00:01:50,350 --> 00:01:52,150
Tiempo total.

29
00:01:52,390 --> 00:01:59,710
Dos punto concatenado con paréntesis, porque vamos a restar de dos menos de uno.

30
00:01:59,920 --> 00:02:00,490
El total.

31
00:02:01,720 --> 00:02:08,770
Este más para concatenar y la recta del tiempo final con el tiempo inicial, y acá tenemos el resultado.

32
00:02:08,980 --> 00:02:10,090
Bien, vamos a ejecutar.

33
00:02:14,380 --> 00:02:14,650
Bueno.

34
00:02:14,870 --> 00:02:16,390
Tiempo, un milisegundo.

35
00:02:16,690 --> 00:02:19,570
Es decir, no se Morana, pero vamos a aplicar un delay.

36
00:02:20,260 --> 00:02:22,810
Pero antes de eso voy a simplificar un poco.

37
00:02:22,960 --> 00:02:26,620
Acá estamos concatenado el nombre con el apellido, lo convertimos en mayúscula.

38
00:02:27,080 --> 00:02:30,610
Entonces bueno, acá vamos a quitar esto de acá.

39
00:02:30,740 --> 00:02:34,870
Este con CAT, este también y vamos a utilizar el string.

40
00:02:35,470 --> 00:02:35,920
Mejor.

41
00:02:36,700 --> 00:02:39,410
Entonces, en vez de que nombre tu string?

42
00:02:40,060 --> 00:02:45,100
Es lo mismo porque el toString lo que hace concatenar nombre apellido y acá lo convirtió en mayúscula.

43
00:02:45,310 --> 00:02:46,090
Queda mucho mejor.

44
00:02:46,280 --> 00:02:49,810
Bien, entonces como explicaba, vamos a dar un delay por acá.

45
00:02:50,500 --> 00:02:58,360
Entonces con taime y unit punto ccon, punto sleep de un segundo.

46
00:02:58,570 --> 00:03:00,040
Acá no pide manejar el track catch.

47
00:03:02,090 --> 00:03:05,570
Bien, en el fondo estamos dando un delay a la búsqueda.

48
00:03:05,690 --> 00:03:11,220
Estamos simulando, por ejemplo, una consulta al Ayato que se puede demorar un tiempo, o hago un proceso

49
00:03:11,220 --> 00:03:12,800
o lo que sea por cada elemento.

50
00:03:13,130 --> 00:03:14,450
Y eso va a tener un impacto.

51
00:03:14,930 --> 00:03:16,850
Entonces, por ejemplo, si ejecutamos esto.

52
00:03:18,850 --> 00:03:19,870
Veamos cuánto se demora.

53
00:03:23,070 --> 00:03:28,350
Bueno, son varios tuario, entonces por cada uno empieza a buscar y creo que Bruce esta al final se

54
00:03:28,350 --> 00:03:35,370
demora 7 segundos o menos un segundo por cada elemento 1, 2, 3, 4, 5, 6, 7, claro.

55
00:03:36,520 --> 00:03:39,910
Son 7 milisegundos, 7 segundos y encuentra a Cruz.

56
00:03:41,930 --> 00:03:43,130
Qué estamos retornando?

57
00:03:43,880 --> 00:03:49,800
Le vamos a cambiar el nombre en vez de nombres, resultado para que quede más claro.

58
00:03:50,720 --> 00:03:51,470
Y acá también.

59
00:03:54,390 --> 00:03:55,050
Resultado.

60
00:03:56,640 --> 00:04:01,210
Entonces, cuando tenemos una gran cantidad de datos que procesar, o bien cada procesamiento toma un

61
00:04:01,210 --> 00:04:02,800
tiempo importante.

62
00:04:02,890 --> 00:04:09,040
Podemos aplicar paralelismo, es decir, que los datos del stream se procesen cada uno en un trip separado

63
00:04:09,160 --> 00:04:11,710
de forma paralela para que sea mucho más rápido.

64
00:04:12,400 --> 00:04:17,800
Y lo que vamos a ver entonces por acá con el operador paralelo.

65
00:04:19,840 --> 00:04:26,170
De esa forma convertimos este flujo a un flujo que soporta un pool de drive para que se procesen en

66
00:04:26,170 --> 00:04:26,710
paralelo.

67
00:04:27,400 --> 00:04:29,860
Veamos la diferencia acá son 7 segundos.

68
00:04:30,070 --> 00:04:31,030
Vamos a ejecutar.

69
00:04:35,420 --> 00:04:39,170
Bastante se fija, miren mil, casi un segundo.

70
00:04:40,130 --> 00:04:42,800
Claro, porque se están ejecutando todos en paralelo.

71
00:04:42,980 --> 00:04:46,880
Incluso podríamos aplicar un rastreo utilizando el PIC.

72
00:04:47,570 --> 00:04:57,520
Entonces por acá debajo del mapa Peak System punto out 2 punto punto print.

73
00:04:57,980 --> 00:04:58,520
Veamos.

74
00:05:00,390 --> 00:05:06,280
Acá vamos a ver los nombres se fijan, se ejecuta mucho más rápido y fíjense en el orden como corren

75
00:05:06,280 --> 00:05:08,310
en paralelo todo casi al mismo tiempo.

76
00:05:08,370 --> 00:05:13,860
Probablemente uno terminante, otro después y como maneja un pull de drift, muy probable que algún

77
00:05:13,860 --> 00:05:19,830
elemento del stream va a ser procesado por un mismo hilo que otro elemento, la que podría ser compartido,

78
00:05:19,890 --> 00:05:22,110
quizás algún hilo bien extremo.

79
00:05:22,140 --> 00:05:25,500
Bruce Willis, Catha Pérez, Lalo Mena se fijan.

80
00:05:25,590 --> 00:05:30,030
El orden antre Guzmán no es el mismo, ya que se están ejecutando en paralelo.

81
00:05:30,240 --> 00:05:32,730
De hecho, si comentamos esto.

82
00:05:34,860 --> 00:05:35,670
El para del.

83
00:05:36,810 --> 00:05:37,860
Los problemas a ejecutar.

84
00:05:39,560 --> 00:05:45,110
Ahí van el orden que corresponde, pero van de forma secuencial con el delay, aplicando el delay.

85
00:05:46,230 --> 00:05:50,790
Con los siete segundo, pero va en orden hasta que encuentra a Brus.

86
00:05:51,060 --> 00:05:57,060
Mantiene la secuencia con Parallel, lo ejecuta varios al mismo tiempo.

87
00:05:57,330 --> 00:05:59,100
De hecho, podría modificar este pic.

88
00:06:00,500 --> 00:06:03,040
N De nombre Lleca.

89
00:06:03,290 --> 00:06:10,640
Bueno, una prisión lanta Shout y vamos a imprimir nombre Dredd.

90
00:06:10,880 --> 00:06:24,010
Dos punto más Dredd, punto Carrá en Tried punto Kidney bien, voy a bajar concatena moscón n el nombre

91
00:06:24,020 --> 00:06:24,440
de usuario.

92
00:06:26,540 --> 00:06:26,810
Más.

93
00:06:27,910 --> 00:06:29,290
Acá vamos a ver en nombre entre.

94
00:06:30,720 --> 00:06:32,040
Son casi todo distinto.

95
00:06:32,520 --> 00:06:41,100
Por ejemplo, Lucy Martínez lo procesa Eldred con el nombre Worker 23 y por debajo utiliza el framework

96
00:06:41,220 --> 00:06:47,640
Executiu Service junto con el Ford Yeung Pull y cada uno de son distintos grid, distintos hilos acá

97
00:06:47,700 --> 00:06:50,520

98
23:9 31 5 el 13.

99
00:06:51,580 --> 00:06:58,570
Ezequiel, con el Drizzt principal del método Main, se fija Andrés 27 19 todo distinto.

100
00:06:58,660 --> 00:06:59,620
Por eso es tan rápido.

101
00:06:59,890 --> 00:07:02,240
Prácticamente se mora un segundo.

102
00:07:03,440 --> 00:07:06,460
Si volvemos a ejecutar, probablemente a cambiar el resultado.

103
00:07:07,570 --> 00:07:08,860
9 5:19.

104
00:07:09,070 --> 00:07:12,610
Ezequiel también el main yasi.

105
00:07:15,990 --> 00:07:21,510
Mucho me optimizado, pero tiene el costo de rendimiento, una sobrecarga, quizás en otro sistema.

106
00:07:21,640 --> 00:07:24,300
Bueno, cuando lo utilizamos no siempre va a depender.

107
00:07:24,390 --> 00:07:29,280
Cuando tenemos una gran cantidad de elementos que procesar en el flujo o el procesamiento de elemento,

108
00:07:29,280 --> 00:07:31,110
lleva un tiempo importante.

109
00:07:31,260 --> 00:07:37,110
Alguna sobrecarga tal como lo estamos viendo en el flat map acá que le aplicamos un sleep para simular,

110
00:07:37,200 --> 00:07:39,180
entonces podemos utilizar paralelismo.

111
00:07:39,210 --> 00:07:40,470
Si no, no es necesario.

112
00:07:40,760 --> 00:07:45,810
Bien, si comentamos esto el Parallel, veamos el nombre del Dredd.

113
00:07:47,170 --> 00:07:51,170
Todo va a ser main main, el principal del método main.

114
00:07:52,120 --> 00:07:54,010
Claro, porque se ejecuta de forma secuencial.

115
00:08:02,630 --> 00:08:03,320
Mucho más rápido.

116
00:08:03,440 --> 00:08:04,040
Eso es.

117
00:08:04,130 --> 00:08:05,940
Nos vemos en la siguiente clase.
