---
# System prepended metadata

title: 科技英文-Reactive Performance by Oleh Dokuka-1/2

---

---
title: 科技英文-Reactive Performance by Oleh Dokuka-1/2

---
#Reactive Performance by Oleh Dokuka-1/2
3
00:00:08,830 --> 00:00:11,300
are very happy that we have this session
我們很高興參加這次會議

4
00:00:11,500 --> 00:00:12,200
today
今天

5
00:00:12,400 --> 00:00:14,359
it's a beautiful Wednesday it's almost
這是一個美麗的星期三

6
00:00:14,558 --> 00:00:17,980
summer actually it's April and today
夏天實際上是四月和今天

7
00:00:18,179 --> 00:00:22,100
you're extremely happy to host another
您非常高興主辦另一個

8
00:00:22,300 --> 00:00:24,679
Oleg Oleg the COO card and the session
 Oleg Oleg COO卡和會議

9
00:00:24,879 --> 00:00:26,839
will be about directive performance Oh
將與指令性能有關哦
Directive(adj)
10
00:00:27,039 --> 00:00:31,609
like reading hey hey hello glad to meet
喜歡閱讀嘿嘿你好見到

11
00:00:31,809 --> 00:00:32,299
you again
又是你

12
00:00:32,500 --> 00:00:35,329
and I'm fine what about you
我很好你呢

13
00:00:35,530 --> 00:00:39,259
I am absolutely perfect this is a topic
我絕對完美，這是一個話題

14
00:00:39,460 --> 00:00:41,358
that is a great interest for me
對我來說很有趣

15
00:00:41,558 --> 00:00:44,149
personally I know that you might be
我個人知道你可能是

16
00:00:44,350 --> 00:00:46,428
mentioning ground compiler and as a
提到地面編譯器，並作為
Compiler:to write down old data
17
00:00:46,628 --> 00:00:48,739
developer advocate for Grand Am project
 Grand Am專案的開發宣導者
Advocate:to say something is great
18
00:00:48,939 --> 00:00:52,309
I'm extremely excited to hear whatever
我很高興聽到任何消息

19
00:00:52,509 --> 00:00:53,658
you're gonna say I hope you're gonna say
你會說我希望你會說

20
00:00:53,859 --> 00:00:58,279
good things about it so for our inverse
關於它的好事，對於我們的逆
Inverse:up side down
21
00:00:58,479 --> 00:01:00,318
before we start I hope everything is
在我們開始之前，我希望一切都好

22
00:01:00,518 --> 00:01:01,849
doing is going to fine I can see the
做的很好，我可以看到

23
00:01:02,049 --> 00:01:02,899
video on YouTube
 YouTube上的視頻

24
00:01:03,100 --> 00:01:05,269
running let me just share the screen and
跑步讓我分享螢幕

25
00:01:05,469 --> 00:01:07,310
just give you cheap bits of information
只是給你便宜的資訊

26
00:01:07,510 --> 00:01:10,159
like literally show two slides for you
就像為您展示兩張幻燈片一樣

27
00:01:10,359 --> 00:01:12,649
hope you can see my screen so today's
希望你能看到我的螢幕，所以今天

28
00:01:12,849 --> 00:01:14,569
session in watching virtual Jack the
觀看虛擬傑克的會議
Virtual:VR=Virtual Reality
29
00:01:14,769 --> 00:01:17,000
virtual Java user group today's session
虛擬Java用戶組今天的會議

30
00:01:17,200 --> 00:01:19,039
is for active performance Oleg's twitter
是為了積極表演Oleg的推特

31
00:01:19,239 --> 00:01:21,709
is like the pooka you should follow him
就像是你應該跟隨他的pooka 

32
00:01:21,909 --> 00:01:23,629
if you don't get the chance to ask a
如果您沒有機會問一個

33
00:01:23,829 --> 00:01:25,189
questions today
今天的問題

34
00:01:25,390 --> 00:01:27,709
you should thinking if you are watching
你應該想如果你在看

35
00:01:27,909 --> 00:01:29,989
this live you can ask questions in the
您可以在這個現場提問

36
00:01:30,189 --> 00:01:33,019
slack group so join our slack and there
鬆弛的團體，所以加入我們的鬆弛

37
00:01:33,219 --> 00:01:35,269
is a live session channel and even ask
是直播會話頻道，甚至問

38
00:01:35,469 --> 00:01:37,009
only question there and I will find that
唯一的問題，我會發現

39
00:01:37,209 --> 00:01:38,450
portion moment during the presentation
演講中的部分時刻

40
00:01:38,650 --> 00:01:41,569
and ask oh like your questions right
然後問哦，就像你的問題一樣

41
00:01:41,769 --> 00:01:45,319
stand you are welcome to shirt the
站起來，歡迎您來襯衫

42
00:01:45,519 --> 00:01:46,879
virtual jerk and this particular session
虛擬混蛋和這個特定的會議

43
00:01:47,079 --> 00:01:48,769
and if you have any feedback about the
如果您對

44
00:01:48,969 --> 00:01:50,780
quality about the topics about the
有關主題的品質

45
00:01:50,980 --> 00:01:53,359
presenters and how extremely excellent
演講者，以及如何出色

46
00:01:53,560 --> 00:01:56,239
there you can tweet at virtual jack or
在那裡您可以在虛擬插孔或

47
00:01:56,439 --> 00:01:59,569
at me personally Ashe life if you're
如果你是個人，我會在阿什生活中

48
00:01:59,769 --> 00:02:01,219
watching this on youtube and you don't
在youtube上觀看，您不會

49
00:02:01,420 --> 00:02:03,230
feel like the quality of the video is up
感覺視頻品質提高了

50
00:02:03,430 --> 00:02:05,659
to your expectations please use the COG
達到您的期望，請使用COG 

51
00:02:05,859 --> 00:02:09,558
icon on the video widget to increase the
視頻小部件上的圖示以增加

52
00:02:09,758 --> 00:02:13,610
quality typically it goes up to 720p so
品質通常高達720p，因此

53
00:02:13,810 --> 00:02:13,850
it
它

54
00:02:14,050 --> 00:02:16,160
should be absolutely fine for watching
應該絕對適合觀看

55
00:02:16,360 --> 00:02:21,560
any anything literally right so with all
任何字面上正確的事情都如此

56
00:02:21,759 --> 00:02:23,930
that important official organizational
那個重要的官方組織

57
00:02:24,129 --> 00:02:28,850
info out of our way I'm very happy to
資訊讓我們很高興

58
00:02:29,050 --> 00:02:31,400
present all of T he is a contributor to
目前所有他都是
contributor to(N):give something to other people to use

59
00:02:31,599 --> 00:02:34,280
project director he's an open source
項目總監，他是一個開源

60
00:02:34,479 --> 00:02:38,500
committer he is a consultant in the java
他是Java的顧問

61
00:02:38,699 --> 00:02:42,260
software engineer for i think many many
我認為很多的軟體工程師

62
00:02:42,460 --> 00:02:46,790
years reasonably many years he looks
他看起來好多年

63
00:02:46,990 --> 00:02:50,780
mean but a sufficient amount of years to
意味著但足夠長的時間

64
00:02:50,979 --> 00:02:53,420
become an expert and she wrote a book
成為專家，她寫了一本書

65
00:02:53,620 --> 00:02:59,150
right yeah I did project fraktur I
是的，我確實做了我的專案
Fraktur:software name
66
00:02:59,349 --> 00:03:02,390
aspire to write a book one day so when I
渴望有一天寫一本書，所以當我

67
00:03:02,590 --> 00:03:04,640
grow up I want to be more like you
長大後我想變得更像你

68
00:03:04,840 --> 00:03:07,370
so without further ado please welcome
因此，事不宜遲，請歡迎

69
00:03:07,569 --> 00:03:10,580
poet and we'll see you in the live
詩人，我們會在現場見到你

70
00:03:10,780 --> 00:03:14,540
session channel on slack oh look it's
會話頻道閒置哦，看起來是

71
00:03:14,740 --> 00:03:16,700
alright befores yeah let me share my
好吧，是的，讓我分享我的

72
00:03:16,900 --> 00:03:21,110
screen first and save on my camera
首先螢幕並保存在我的相機上

73
00:03:21,310 --> 00:03:23,750
intern in order to improve the
為了提高實習生的

74
00:03:23,949 --> 00:03:26,450
performance so yeah do see it I guess
性能，所以我確實看到了

75
00:03:26,650 --> 00:03:32,320
you can see yourself alright yeah I
你可以看到自己好吧，我

76
00:03:32,520 --> 00:03:38,090
guess we can start and today's topic is
猜想我們可以開始，今天的話題是

77
00:03:38,289 --> 00:03:40,670
reactive performance this is the first
反應性能這是第一

78
00:03:40,870 --> 00:03:46,319
part of the of this reactive performance
此無功表現的一部分

79
00:03:46,650 --> 00:03:48,469
presentation because there is I'm
演示文稿，因為有我

80
00:03:48,669 --> 00:03:51,770
planning to to give another part and in
計畫做出另一部分貢獻

81
00:03:51,969 --> 00:03:54,610
order to save your time and in order to
為了節省您的時間，並為了

82
00:03:54,810 --> 00:03:59,689
make this watching and this video as
觀看此視頻，並將其作為

83
00:03:59,889 --> 00:04:02,180
much as possible productive for you I
我為您帶來盡可能多的生產力

84
00:04:02,379 --> 00:04:05,000
would like to start with with some
想從一些開始

85
00:04:05,199 --> 00:04:07,640
slides that describes what is this talk
幻燈片描述了這個話題

86
00:04:07,840 --> 00:04:10,210
about and for whom this talk is
談論的物件和物件

87
00:04:10,409 --> 00:04:13,360
especially first of all expect that
特別是首先期望

88
00:04:13,560 --> 00:04:17,538
everyone who listens this this
每個聽這個的人

89
00:04:17,738 --> 00:04:20,840
presentation in this talk have ever
在這個演講中的演講曾經

90
00:04:21,040 --> 00:04:22,670
heard about reactive programming
聽說過反應式程式設計

91
00:04:22,870 --> 00:04:26,220
reactive streams about Eric's Java and
關於Eric的Java和
Reactive:make something happen
Streams:live video on the internet
92
00:04:26,420 --> 00:04:31,829
reactor 3 for example I expect that you
例如3號反應堆，我希望你

93
00:04:32,029 --> 00:04:33,840
know something about that you try that
知道一些你嘗試

94
00:04:34,040 --> 00:04:36,810
and you want to tune your performance of
而您想調整您的表現

95
00:04:37,009 --> 00:04:39,329
your reactive application where you are
您所在的反應式應用程式

96
00:04:39,529 --> 00:04:45,420
using one of those libraries and I would
使用這些庫之一，我會

97
00:04:45,620 --> 00:04:47,910
like to pay attention that during this
喜歡注意在此期間

98
00:04:48,110 --> 00:04:50,550
talk we are going to look at directive
談談我們要看的指令

99
00:04:50,750 --> 00:04:52,290
streams under the hood we are going to
流將在引擎蓋下

100
00:04:52,490 --> 00:04:54,960
understand what is going on inside
瞭解裡面發生了什麼

101
00:04:55,160 --> 00:04:57,810
direct streams how it works and so far
引導流如何運行，到目前為止

102
00:04:58,009 --> 00:05:01,199
and soul then we will try to understand
和靈魂，那麼我們將嘗試瞭解

103
00:05:01,399 --> 00:05:04,350
what is what is hidden in our excavator
我們的挖掘機隱藏了什麼
Excavator:to take out very carefully

104
00:05:04,550 --> 00:05:06,780
and reactors and reactor 3 what hidden
和反應堆和反應堆3隱藏了什麼
Reactors:the power station for nuclear in 墾丁(核能)
105
00:05:06,980 --> 00:05:09,420
properties they have and how we can tune
他們擁有的屬性以及我們如何調整
Tune:to change something make it perfect
Tone:sound
106
00:05:09,620 --> 00:05:13,620
them then we will try to find out maybe
他們，那麼我們將嘗試找出也許

107
00:05:13,819 --> 00:05:17,790
better GC for rectaive streams and try to
更好的GC用於直腸流，並嘗試

108
00:05:17,990 --> 00:05:20,639
optimize our streams with growl as JIT
通過咆哮作為JIT優化我們的流
Optimize:to improve to be the best
Growl:software
109
00:05:20,839 --> 00:05:22,949
compiler so during this talk you should
編譯器，因此在本次演講中，您應該

110
00:05:23,149 --> 00:05:26,100
expect those topics and you should
期待那些主題，您應該

111
00:05:26,300 --> 00:05:29,100
understand that you have to have some
瞭解你必須要有一些

112
00:05:29,300 --> 00:05:31,020
some knowledge about reactive streams
關於反應流的一些知識

113
00:05:31,220 --> 00:05:33,540
and understanding of essentials of
和理解的要點

114
00:05:33,740 --> 00:05:35,160
reactive streams like back pressure
反應性物流，例如背壓

115
00:05:35,360 --> 00:05:38,129
control and a synchronous message
控制和同步消息
Synchronous:something happen in the same way and same time
116
00:05:38,329 --> 00:05:41,160
passing and so forth and so on and you
路過等等等等，你

117
00:05:41,360 --> 00:05:43,410
should take into account that without
應該考慮到沒有

118
00:05:43,610 --> 00:05:45,680
those knowledge is you will probably
這些知識就是你可能

119
00:05:45,879 --> 00:05:49,800
won't get fully this this conversation
這次談話不會完全

120
00:05:50,000 --> 00:05:52,740
in this discussion and bone get and the
在這個討論中，骨得到和

121
00:05:52,939 --> 00:05:56,610
whole the whole knowledge about the the
整個關於

122
00:05:56,810 --> 00:05:58,920
reactive tuned Yin without understanding
音調無知

123
00:05:59,120 --> 00:06:05,129
the centrioles so let me start and if
中心，所以讓我開始，如果

124
00:06:05,329 --> 00:06:07,379
you still think that this topic is for
您仍然認為該主題是針對

125
00:06:07,579 --> 00:06:10,230
you let me introduce myself as oleg
你讓我自我介紹

126
00:06:10,430 --> 00:06:12,270
mentioned my name is Oleg I'm from
提到我的名字叫奧列格，我來自

127
00:06:12,470 --> 00:06:15,360
Ukraine from Kiev I bought from NATO
我從北約買的基輔的烏克蘭

128
00:06:15,560 --> 00:06:18,509
fiber we are building reactive streams
纖維，我們正在建設反應流

129
00:06:18,709 --> 00:06:21,509
over the network so we are built in new
通過網路，因此我們內置了新的

130
00:06:21,709 --> 00:06:23,189
future protocol called
未來協議稱為

131
00:06:23,389 --> 00:06:27,360
our socket and also I am I'm contributor
我們的插座，我也是我的貢獻者

132
00:06:27,560 --> 00:06:29,850
to project veteran and I'm doing my best
投射老兵，我正在盡我所能
Veteran:do something many years and good
133
00:06:30,050 --> 00:06:33,120
to improve that project from popular
從流行改善該項目

134
00:06:33,319 --> 00:06:36,410
decide and as well as from performance I
決定，以及根據表現我

135
00:06:36,610 --> 00:06:39,569
also I am organizing and
我也在組織和

136
00:06:39,769 --> 00:06:41,610
helping with organizing one of the
説明組織其中之一

137
00:06:41,810 --> 00:06:43,740
biggest fuels the biggest conference in
最大的燃料最大的會議
Fuels:oil
138
00:06:43,939 --> 00:06:46,050
Ukraine like GE conf and daleks Ukraine
烏克蘭像GE conf和daleks烏克蘭

139
00:06:46,250 --> 00:06:48,749
and improve my improves my local
並提高我的水準

140
00:06:48,949 --> 00:06:51,778
community or by organizing joeys or
社區或組織喬伊或

141
00:06:51,978 --> 00:06:56,218
groups so first of all you should ask
分組，所以首先您應該問

142
00:06:56,418 --> 00:06:58,679
the main question should we care about
我們應該關心的主要問題

143
00:06:58,879 --> 00:07:02,069
performance in reactive streams in order
反應流中的性能按順序

144
00:07:02,269 --> 00:07:04,709
to answer this question I'm going to
回答這個問題，我要

145
00:07:04,908 --> 00:07:07,920
show you a few few screenshots the first
給你看幾個截圖

146
00:07:08,120 --> 00:07:10,050
one is this this is a performance
一個是這是一場表演

147
00:07:10,250 --> 00:07:12,709
comparison between Java streams and
 Java流與

148
00:07:12,908 --> 00:07:15,420
reactive streams and as you can see
反應性流，如您所見

149
00:07:15,620 --> 00:07:18,300
there is slight performance difference
性能略有差異

150
00:07:18,500 --> 00:07:22,410
like 5% in performance so yeah not that
像5％的表現，是的，不是

151
00:07:22,610 --> 00:07:25,259
much but you can just imagine that in
很多，但是你可以想像

152
00:07:25,459 --> 00:07:28,020
real production where we are running a
我們正在運行的實際生產

153
00:07:28,220 --> 00:07:30,180
lot of servers we are where we are
我們在很多伺服器上

154
00:07:30,379 --> 00:07:33,718
handling thousands or millions of user
處理成千上萬的用戶

155
00:07:33,918 --> 00:07:37,499
requests 5% of performance can for
要求提供5％的效果

156
00:07:37,699 --> 00:07:40,939
something especially it can boards some
特別是它可以登上一些東西

157
00:07:41,139 --> 00:07:43,350
customers money or something like that
客戶花錢之類的

158
00:07:43,550 --> 00:07:47,850
on the other hand we can take a look at
另一方面，我們可以看看

159
00:07:48,050 --> 00:07:50,209
another performance comparison between
之間的另一個性能比較

160
00:07:50,408 --> 00:07:53,639
reactive libraries and between plane for
反應庫和平面之間

161
00:07:53,839 --> 00:07:56,369
loop and as you can see if if you can
迴圈，如您所見，是否可以

162
00:07:56,569 --> 00:07:58,468
pay your attention to those numbers you
注意那些數字，你

163
00:07:58,668 --> 00:08:00,990
will see that performance difference
會看到性能差異

164
00:08:01,189 --> 00:08:03,540
between plane for loop between plane
平面間換平面

165
00:08:03,740 --> 00:08:05,910
imperative programming and reactive
命令式程式設計和反應式
Imperative:you need to now
Can(use now)/could(future)->may->should->need to->must
(weak->strong)
166
00:08:06,110 --> 00:08:08,699
libraries is not that five percent but
圖書館不是百分之五，而是

167
00:08:08,899 --> 00:08:12,600
five times higher or five times faster
高五倍或快五倍

168
00:08:12,800 --> 00:08:16,319
than react to streams so now you should
而不是對流做出反應，所以現在您應該

169
00:08:16,519 --> 00:08:20,129
ask your question why should we care and
問你一個問題，我們為什麼要關心和

170
00:08:20,329 --> 00:08:22,639
I guess seeing those numbers you should
我想看到那些數字你應該

171
00:08:22,839 --> 00:08:24,959
understand that we care we should care
瞭解我們在乎我們應該在乎

172
00:08:25,158 --> 00:08:26,879
about performance because performance
關於性能，因為性能

173
00:08:27,079 --> 00:08:30,389
overhead of reactive libraries is huge
反應式庫的開銷巨大

174
00:08:30,589 --> 00:08:33,088
like five times overhead so let me
像五倍的開銷，讓我

175
00:08:33,288 --> 00:08:34,828
quickly start with the agenda and
快速開始議程

176
00:08:35,028 --> 00:08:37,409
explain what we are going to do today
解釋我們今天要做什麼

177
00:08:37,610 --> 00:08:39,689
first of all we are going to understand
首先我們要瞭解

178
00:08:39,889 --> 00:08:42,419
why we have the this overhead in
為什麼我們有這個開銷

179
00:08:42,620 --> 00:08:45,089
reactive libraries then we are going to
反應性庫，然後我們將

180
00:08:45,289 --> 00:08:48,328
then I am going to share some tuning
然後我要分享一些調整
Tuning:to make perfect
181
00:08:48,528 --> 00:08:50,519
types and trips this is not called
類型和行程

182
00:08:50,720 --> 00:08:51,769
changing I think
我想改變

183
00:08:51,970 --> 00:08:54,378
mentioned earlier this is the first part
前面提到這是第一部分

184
00:08:54,578 --> 00:08:58,308
of reactive performance presentation and
無功表現介紹和

185
00:08:58,509 --> 00:09:00,049
in this presentation we are going to
在本演示中，我們將要

186
00:09:00,250 --> 00:09:03,709
talk about not God changes too in types
談論上帝在類型上也不會改變

187
00:09:03,909 --> 00:09:06,889
and tricks because you're running your
和技巧，因為您正在運行

188
00:09:07,089 --> 00:09:08,419
application in production
在生產中的應用

189
00:09:08,620 --> 00:09:11,118
you're already you brought your code or
您已經帶來了代碼或

190
00:09:11,318 --> 00:09:14,438
you are planning to write something and
你打算寫點東西， 

191
00:09:14,639 --> 00:09:18,198
if you're if you're if you are the first
如果你是，如果你是第一個

192
00:09:18,399 --> 00:09:21,368
part of the audience who has already
已經有一部分觀眾

193
00:09:21,568 --> 00:09:24,169
written some application using react to
使用react編寫了一些應用程式

194
00:09:24,370 --> 00:09:27,289
streams you put you are probably won't
您投放的資訊流可能不會

195
00:09:27,490 --> 00:09:31,459
be able to you won't be able to rewrite
能夠你將無法重寫

196
00:09:31,659 --> 00:09:35,719
your code or refactor it just just after
您的代碼或僅在之後進行重構

197
00:09:35,919 --> 00:09:36,649
this presentation
這個演講

198
00:09:36,850 --> 00:09:39,078
those I'm going to share some some
那些我要分享一些

199
00:09:39,278 --> 00:09:42,349
minimal types and tricks in order to
最少的類型和技巧，以便

200
00:09:42,549 --> 00:09:44,688
improve your performance without any
毫無任何改善的表現

201
00:09:44,889 --> 00:09:47,779
code changes just by tuning gvm and so
僅通過調整gvm等更改代碼

202
00:09:47,980 --> 00:09:49,818
for and so on and finally we are going
等等，最後我們要去

203
00:09:50,019 --> 00:09:52,609
to experiment with a real app written
嘗試編寫一個真實的應用程式

204
00:09:52,809 --> 00:09:54,919
fully interactive streams using our
使用我們的完全互動流

205
00:09:55,120 --> 00:09:57,198
socket and spring and we are going to
插座和彈簧，我們將要
Spring:彈簧
206
00:09:57,399 --> 00:09:59,868
understand whether we can improve the
瞭解我們是否可以改善

207
00:10:00,068 --> 00:10:01,878
performance of this this application
此應用程式的性能

208
00:10:02,078 --> 00:10:04,549
using previously mentioned types and
使用前面提到的類型和

209
00:10:04,750 --> 00:10:07,909
tricks so let me start and let me
技巧，讓我開始，讓我

210
00:10:08,110 --> 00:10:11,419
quickly introduce and explain both
快速介紹並解釋兩者

211
00:10:11,620 --> 00:10:13,938
overhead we have in reactive streams
反應流中的開銷
Overhead:背後
212
00:10:14,139 --> 00:10:16,698
first of all we have to start with
首先，我們必須從

213
00:10:16,899 --> 00:10:18,678
streams like streams life cycle because
流就像流生命週期一樣，因為

214
00:10:18,879 --> 00:10:20,479
this is the most essential part of
這是最重要的部分

215
00:10:20,679 --> 00:10:22,909
reactive streams composition react to
反應性物流成分對

216
00:10:23,110 --> 00:10:25,308
streams sampling running and so foreign
流採樣運行等

217
00:10:25,509 --> 00:10:27,738
zone and starting from that point we are
區域，從這一點開始，我們是

218
00:10:27,938 --> 00:10:30,948
going to understand what overhead we get
會明白我們得到了什麼開銷

219
00:10:31,149 --> 00:10:33,198
with reactive strings so first of all
用反應性的弦，所以首先

220
00:10:33,399 --> 00:10:36,589
there is a three main life cycle stage
有三個主要的生命週期階段

221
00:10:36,789 --> 00:10:38,628
in reactive streams the first one is
在反應流中，第一個是

222
00:10:38,828 --> 00:10:42,049
when we call from array when we call map
當我們從陣列調用地圖時

223
00:10:42,250 --> 00:10:45,618
filter and whatever operators and this
篩檢程式以及任何運算子
Filter:tell you something good or bad
224
00:10:45,818 --> 00:10:48,019
stage is basically calling assembling
階段基本上是召集

225
00:10:48,220 --> 00:10:51,318
because we just assemble our pipeline we
因為我們只是組裝管道

226
00:10:51,519 --> 00:10:54,219
don't run any data we haven't had any
不要運行任何我們沒有的資料

227
00:10:54,419 --> 00:10:56,928
subscription so far we just combine and
到目前為止，我們只是將

228
00:10:57,129 --> 00:10:59,748
we just build our pipeline through we
我們只是通過我們建立管道

229
00:10:59,948 --> 00:11:02,328
are going to send our data so this is
將要發送我們的資料，所以這是

230
00:11:02,528 --> 00:11:04,998
just an assembling stage where we don't
只是一個組裝階段，我們不

231
00:11:05,198 --> 00:11:05,750
have any
有什麼

232
00:11:05,950 --> 00:11:09,589
in so far just a pipeline of objects the
到目前為止，只是對象的管道

233
00:11:09,789 --> 00:11:12,409
second stage in the lifecycle of reactor
反應堆生命週期的第二階段

234
00:11:12,610 --> 00:11:15,169
streams is basically subscribed when we
當我們

235
00:11:15,370 --> 00:11:17,569
subscribe to this stream and this is
訂閱此流，這是

236
00:11:17,769 --> 00:11:19,729
basically a terminal operator when we
基本上是終端運營商

237
00:11:19,929 --> 00:11:23,029
asking for some data and exposing our
要求一些資料並公開我們的

238
00:11:23,230 --> 00:11:26,059
intent to receive those data so exist at
意圖接收這些資料，因此存在於

239
00:11:26,259 --> 00:11:29,679
this stage we are passing to you our
這個階段我們傳遞給你我們

240
00:11:29,879 --> 00:11:32,209
publisher or reactive stream the
發佈者或反應流

241
00:11:32,409 --> 00:11:34,699
subscriber the subscriber object which
訂閱者訂閱者對象

242
00:11:34,899 --> 00:11:38,719
is flow up to you to our publisher and
由您流向我們的發佈商，並且

243
00:11:38,919 --> 00:11:41,990
using this subscriber publisher start
使用此訂閱者的發佈者開始

244
00:11:42,190 --> 00:11:44,809
executing some and calling some methods
執行一些並調用一些方法

245
00:11:45,009 --> 00:11:48,139
like unsubscribe through which publisher
就像通過哪個發佈者退訂

246
00:11:48,340 --> 00:11:52,059
sends its subscription to the subscriber
將其訂閱發送給訂閱者

247
00:11:52,259 --> 00:11:55,189
this stage is basically call it a
這個階段基本上稱之為

248
00:11:55,389 --> 00:11:57,559
subscription time because we don't have
訂閱時間，因為我們沒有

249
00:11:57,759 --> 00:12:00,529
any detest data so far at this stage we
到目前為止，我們目前尚有任何討厭的資料

250
00:12:00,730 --> 00:12:03,979
just exchange in exchange in our we are
只是交換我們的交換

251
00:12:04,179 --> 00:12:06,439
doing handshake or something that and
做握手之類的

252
00:12:06,639 --> 00:12:08,559
just we just exchanging subscriber
只是我們只是交換訂戶

253
00:12:08,759 --> 00:12:11,419
versus subscription in order to start
與訂閱開始

254
00:12:11,620 --> 00:12:14,829
our communication and the final stage at
我們的溝通和最後階段

255
00:12:15,029 --> 00:12:19,549
reactive streams lifecycle is actually
反應流的生命週期實際上是

256
00:12:19,750 --> 00:12:22,149
run time at which we are star calling or
我們在星際大戰中運行的時間

257
00:12:22,350 --> 00:12:24,829
requesting data for example we are going
請求資料，例如我們要去

258
00:12:25,029 --> 00:12:27,379
to request five elements from from our
要求我們的五個要素

259
00:12:27,580 --> 00:12:31,339
publisher and our publisher star starts
發佈者和我們的發佈者之星開始

260
00:12:31,539 --> 00:12:34,819
sending the data to the overt subscriber
將資料發送到公開訂戶

261
00:12:35,019 --> 00:12:38,719
and we somehow going to are going to
而且我們將要去

262
00:12:38,919 --> 00:12:43,849
process them so this stage is basically
處理它們，所以這個階段基本上是

263
00:12:44,049 --> 00:12:46,159
called at run time at which we are
在我們所處的運行時調用

264
00:12:46,360 --> 00:12:49,579
actually handling some data processing
實際處理一些資料處理

265
00:12:49,779 --> 00:12:52,939
them and somehow react to all incoming
他們以某種方式對所有傳入的消息做出反應

266
00:12:53,139 --> 00:12:55,339
embeds so this is basically what is
嵌入，所以這基本上是什麼
Embeds:to put something into something
267
00:12:55,539 --> 00:12:58,250
going on when we start doing actual
當我們開始做實際的時候

268
00:12:58,450 --> 00:13:00,349
communication between for example client
例如用戶端之間的通信

269
00:13:00,549 --> 00:13:02,899
and server in UF locks and so forth and
和伺服器中的UF鎖等等

270
00:13:03,100 --> 00:13:06,799
so on so let me quickly show you this
等等，讓我快速向您展示

271
00:13:07,000 --> 00:13:12,919
basic life cycle by debugging some small
通過調試一些小的基本生命週期

272
00:13:13,120 --> 00:13:15,829
plain application as which I mention it
我提到的普通應用程式

273
00:13:16,029 --> 00:13:19,479
on my slides so hope everyone
在我的幻燈片上，希望大家

274
00:13:19,679 --> 00:13:25,990
but see my code and my IDE well and what
但是很好地瞭解我的代碼和IDE，以及

275
00:13:26,190 --> 00:13:28,240
I have here basically I'm using in my
我基本上在這裡用

276
00:13:28,440 --> 00:13:31,389
project project reactor which is from
專案專案反應堆是從

277
00:13:31,589 --> 00:13:35,049
pilot Hall which is extensively used in
飛行員廳廣泛用於

278
00:13:35,250 --> 00:13:39,519
in Spring Framework five and I fear I
在Spring Framework 5中，我擔心我

279
00:13:39,720 --> 00:13:42,189
have really plain and an uncomplicated
真的很簡單

280
00:13:42,389 --> 00:13:45,120
co-op which I going which I'm going to
我要去的合作社

281
00:13:45,320 --> 00:13:48,459
run right now and I'm going to explain
現在運行，我將解釋

282
00:13:48,659 --> 00:13:51,039
what is going on it under the hood in
在引擎蓋下發生了什麼

283
00:13:51,240 --> 00:13:53,169
order to you to ensure you that
為了確保您

284
00:13:53,370 --> 00:13:56,258
everything works as a same engine so
一切都像一個引擎一樣工作

285
00:13:56,458 --> 00:13:59,109
first of all we started assembling the
首先，我們開始組裝

286
00:13:59,309 --> 00:14:03,099
code we got our publisher created and
我們創建發佈者的代碼， 

287
00:14:03,299 --> 00:14:07,508
now we are going to subscribe to this to
現在我們要訂閱這個

288
00:14:07,708 --> 00:14:09,849
this publisher at this stage we are
這個階段的發佈者

289
00:14:10,049 --> 00:14:13,089
going to cook to create some lump the
要煮一些塊

290
00:14:13,289 --> 00:14:15,099
basis subscribers so this is building
基礎訂戶，所以這正在建設

291
00:14:15,299 --> 00:14:16,899
feature of project reactor you can
項目反應堆的功能可以

292
00:14:17,100 --> 00:14:19,328
create your subscriber just by calling
只需致電即可創建您的訂戶

293
00:14:19,528 --> 00:14:22,269
you subscriber and passing in the same
您的訂戶並傳遞相同的

294
00:14:22,470 --> 00:14:25,229
way but I'm going to just create no ops
方式，但我將不創建任何操作

295
00:14:25,429 --> 00:14:29,889
subscriber as you can see here and in a
您可以在此處和

296
00:14:30,089 --> 00:14:32,258
few more steps yeah I have to skip this
還有更多步驟，是的，我必須跳過此步驟

297
00:14:32,458 --> 00:14:37,349
it's off I'm going to pass yeah this guy
這是關閉，我要通過是的，這個傢伙

298
00:14:37,549 --> 00:14:41,589
mom I'm going to subscribe to my to my
媽媽，我要訂閱我的

299
00:14:41,789 --> 00:14:44,469
stream using normal method at that stage
在該階段使用常規方法進行流

300
00:14:44,669 --> 00:14:48,429
I'm just passing all through all some
我只是穿過所有

301
00:14:48,629 --> 00:14:55,258
additional stages my subscriber some
其他階段我的訂戶一些

302
00:14:55,458 --> 00:15:00,129
some internal invocations and after all
一些內部調用，畢竟

303
00:15:00,330 --> 00:15:03,039
yeah we got to flux or radius
是的，我們到達了通量或半徑
Radius: 半徑
Flux:something is always change
304
00:15:03,240 --> 00:15:06,758
implementation of rate of wrapper around
包裝率的實施

305
00:15:06,958 --> 00:15:09,789
array like publisher for array and now
像發佈者一樣排列陣列，現在

306
00:15:09,990 --> 00:15:13,000
at this stage I'm going to to enter the
在這個階段，我要進入

307
00:15:13,200 --> 00:15:15,969
flux or a subscribe method which is the
通量或訂閱方法

308
00:15:16,169 --> 00:15:18,008
most interested for us the most
對我們最感興趣

309
00:15:18,208 --> 00:15:20,559
interesting for us at the moment
目前對我們很有趣

310
00:15:20,759 --> 00:15:24,039
at this stage I'm just going to walk
在這個階段我要走

311
00:15:24,240 --> 00:15:28,269
through some some conditions and as you
通過一些條件和你

312
00:15:28,470 --> 00:15:32,078
can see here we got a subscriber so this
可以看到這裡我們有一個訂戶，所以這個

313
00:15:32,278 --> 00:15:33,399
is basically a
基本上是

314
00:15:33,600 --> 00:15:36,998
subscriber I mentioned on my slides and
我在幻燈片上提到的訂閱者

315
00:15:37,198 --> 00:15:42,039
now as I said we are going to send a
現在，正如我所說，我們將發送一個

316
00:15:42,240 --> 00:15:45,490
subscription $2.00 subscriber so at that
訂閱$ 2.00訂閱者，因此

317
00:15:45,690 --> 00:15:48,998
stage we are going to just do in
我們將要做的階段

318
00:15:49,198 --> 00:15:51,729
subscription or data exchange in and by
內或之間的訂閱或資料交換

319
00:15:51,929 --> 00:15:55,719
doing that yeah I have to that guy I
是的，我必須對那個人我

320
00:15:55,919 --> 00:16:02,128
have to guy and here we go we got our
必須要傢伙，在這裡我們走了，我們得到了

321
00:16:02,328 --> 00:16:05,529
subscription and after all we can ask
訂閱，畢竟我們可以問

322
00:16:05,730 --> 00:16:07,748
for some data for example in that case
對於那種情況下的一些資料

323
00:16:07,948 --> 00:16:10,328
we are going to ask for all data by
我們將要求提供所有資料

324
00:16:10,528 --> 00:16:14,258
sending long Maxwell requests so this at
發送長的Maxwell請求，因此在

325
00:16:14,458 --> 00:16:17,558
this stage we just got we just finally
在這個階段，我們終於得到了

326
00:16:17,759 --> 00:16:21,188
exchange it all required or rigid
交換所有必需的或固定的

327
00:16:21,389 --> 00:16:23,469
handshake between our publisher and
我們的發佈者與
Handshake:to check the data is real between two computer
328
00:16:23,669 --> 00:16:26,729
subscriber and now we can start
訂戶，現在我們可以開始

329
00:16:26,929 --> 00:16:29,409
requesting or we can start doing one
請求，或者我們可以開始做一個

330
00:16:29,610 --> 00:16:32,618
time at this moment for example once we
例如，此時此刻的時間

331
00:16:32,818 --> 00:16:37,149
ask it for some data publisher react to
要求一些資料發佈者做出反應

332
00:16:37,350 --> 00:16:40,258
that request and we'll start sending
該請求，我們將開始發送

333
00:16:40,458 --> 00:16:44,229
elements that it has in his arsenal by
它在他的武器庫中的元素

334
00:16:44,429 --> 00:16:46,659
calling on next method and then we are
調用下一個方法，然後

335
00:16:46,860 --> 00:16:48,998
going to consume every element that
將消耗掉所有的元素

336
00:16:49,198 --> 00:16:51,339
publisher sends to us and so foreign to
出版商發送給我們，因此對

337
00:16:51,539 --> 00:16:55,479
own and to the foreign zone until stream
擁有並前往國外地區，直到流

338
00:16:55,679 --> 00:16:58,209
completion which is which means that we
完成，這意味著我們

339
00:16:58,409 --> 00:17:01,628
don't have the publishers and every
沒有出版商

340
00:17:01,828 --> 00:17:05,769
saying that it has and it doesn't and it
說它有，沒有，有

341
00:17:05,970 --> 00:17:08,529
sends only their final terminal signal
僅發送其最終終端信號

342
00:17:08,730 --> 00:17:12,430
to its subscriber so this is basically
給它的用戶，所以基本上

343
00:17:12,630 --> 00:17:16,029
eat and now I hope you ensure that we
吃，現在我希望你能確保我們

344
00:17:16,230 --> 00:17:20,019
have all these mansion at stages during
所有這些豪宅都在

345
00:17:20,220 --> 00:17:20,588
rant
 rant :one person talking for a long time

346
00:17:20,788 --> 00:17:24,069
during empower react to streams so
在授權期間對流做出反應，因此

347
00:17:24,269 --> 00:17:27,759
basically assembling subscription which
基本組裝的訂閱

348
00:17:27,959 --> 00:17:30,549
means send in a subscriber to publisher
意味著將訂閱者發送給發佈者

349
00:17:30,750 --> 00:17:32,229
and receiving subscription and then
並接收訂閱，然後

350
00:17:32,429 --> 00:17:34,598
runtime which is which means sending all
運行時，這意味著發送所有

351
00:17:34,798 --> 00:17:38,919
this data to this subscriber alright so
這個資料給這個使用者

352
00:17:39,119 --> 00:17:43,059
this is the first stage that you this is
這是你的第一階段

353
00:17:43,259 --> 00:17:46,569
the first part that you have to remember
您必須記住的第一部分

354
00:17:46,769 --> 00:17:47,109
about
關於

355
00:17:47,309 --> 00:17:49,480
two streams but this is not the most
兩個流，但這不是最

356
00:17:49,680 --> 00:17:52,930
important because in general let me
重要，因為總的來說讓我

357
00:17:53,130 --> 00:17:54,789
summarize quickly sampling means
快速總結採樣方式

358
00:17:54,990 --> 00:17:56,859
creation the publisher subscription
創建發佈者訂閱

359
00:17:57,059 --> 00:17:59,079
means exchanging data and the rest is
表示交換資料，其餘的是

360
00:17:59,279 --> 00:18:05,200
runtime so this you if you remember what
運行時，如果您還記得這

361
00:18:05,400 --> 00:18:07,180
is going on inside Java streams you
正在Java流中進行

362
00:18:07,380 --> 00:18:10,779
should remember that Java streams has
應該記住Java流具有

363
00:18:10,980 --> 00:18:12,700
something similar to your reactor
與你的反應堆相似

364
00:18:12,900 --> 00:18:15,659
streams if you're going back to to our
如果您要回到我們的網站

365
00:18:15,859 --> 00:18:18,879
IDE and take a look at what is going on
 IDE，看看發生了什麼

366
00:18:19,079 --> 00:18:24,700
base for example is is real Java streams
例如，基礎是真正的Java流

367
00:18:24,900 --> 00:18:29,680
for example like this you quickly create
例如您可以快速創建

368
00:18:29,880 --> 00:18:34,930
some example for you and call it for
給你一些例子，並稱之為

369
00:18:35,130 --> 00:18:37,480
each we will basically got almost
每個我們基本上都會得到

370
00:18:37,680 --> 00:18:41,649
similar execution flow as in reactive
與反應式類似的執行流程

371
00:18:41,849 --> 00:18:49,419
streams because being a LAN well samba
流，因為作為一個局域網桑巴

372
00:18:49,619 --> 00:18:51,940
could we create the same stream object
我們可以創建相同的流物件嗎

373
00:18:52,140 --> 00:18:55,269
which is producer and by calling for
這是生產者，並呼籲

374
00:18:55,470 --> 00:18:58,059
each we are make if you like notified
我們每個人都可以，如果您喜歡通知

375
00:18:58,259 --> 00:18:59,950
the the streams that we this is a
我們這是一個流

376
00:19:00,150 --> 00:19:02,829
terminal operator and we wanna start
終端運營商，我們想開始

377
00:19:03,029 --> 00:19:06,669
consuming some data which it almost
消耗一些幾乎

378
00:19:06,869 --> 00:19:13,159
works like like in reactive streams so
就像在反應流中一樣

379
00:19:13,609 --> 00:19:16,539
content that fog that almost wrecked the
滿足，霧幾乎摧毀了
Wrecked:destroyed
380
00:19:16,740 --> 00:19:18,519
tractor streams is almost similar to
拖拉機流幾乎類似於
Tractor:software
381
00:19:18,720 --> 00:19:22,529
Java streams we can create some basic
 Java流我們可以創建一些基本的

382
00:19:22,730 --> 00:19:25,750
comparison of object overheads that we
比較我們的物件開銷

383
00:19:25,950 --> 00:19:30,490
have seen on the might seen during those
在那些期間看到的力量

384
00:19:30,690 --> 00:19:32,819
those during the demo
演示期間的人

385
00:19:33,019 --> 00:19:36,669
so to summarize read two streams
所以總結一下閱讀兩個流

386
00:19:36,869 --> 00:19:39,399
creates one object one publisher at
在一個發佈者處創建一個物件

387
00:19:39,599 --> 00:19:42,730
assembly time then it creates two
組裝時間，然後創建兩個

388
00:19:42,930 --> 00:19:44,950
objects one subscriber and one
反對一個訂戶和一個

389
00:19:45,150 --> 00:19:47,259
subscription at subscription time
訂閱時訂閱

390
00:19:47,460 --> 00:19:51,609
because this is this contract is for is
因為這個合同是給的

391
00:19:51,809 --> 00:19:55,960
done for for for support in back
為獲得支持而做

392
00:19:56,160 --> 00:19:58,389
pressure and resilience in streaming so
流媒體的壓力和彈性

393
00:19:58,589 --> 00:20:00,859
we used subscription in order to expose
我們使用訂閱來公開

394
00:20:01,059 --> 00:20:04,430
how many elements we are we are ready ta
我們準備了多少元素

395
00:20:04,630 --> 00:20:07,730
consume and that's why we have to to
消費，這就是為什麼我們必須

396
00:20:07,930 --> 00:20:10,819
have all two objects in in this at this
在這裡有所有兩個對象

397
00:20:11,019 --> 00:20:13,430
stage and finally at runtime we can
階段，最後在運行時，我們可以

398
00:20:13,630 --> 00:20:16,940
produce basically an elements and the
基本上產生一個元素

399
00:20:17,140 --> 00:20:19,299
elements within the stream but this is
流中的元素，但這是

400
00:20:19,500 --> 00:20:22,399
actually the logical elements or evens
實際上是邏輯要素或偶數

401
00:20:22,599 --> 00:20:25,099
that we want to handle and process in
我們想要處理和處理的

402
00:20:25,299 --> 00:20:27,740
our stream in Jah stream we have
我們在賈哈流中有

403
00:20:27,940 --> 00:20:30,829
something similar so at the SATA assembly
 SATA外觀類似的東西
SATA:硬體
404
00:20:31,029 --> 00:20:33,919
time we create a stream which which is
時候我們創建一個流

405
00:20:34,119 --> 00:20:36,230
basically a wrapper around array in our
基本上是我們陣列中的包裝器

406
00:20:36,430 --> 00:20:40,069
in our demo that that we have done just
在我們的演示中，我們剛剛完成了

407
00:20:40,269 --> 00:20:43,009
a couple of minutes ago and a
幾分鐘前和

408
00:20:43,210 --> 00:20:44,990
subscription time we provide an
訂閱時間我們提供

409
00:20:45,190 --> 00:20:48,829
implementation of terminal operator but
終端操作員的實現，但是
Implementation:start using
Terminal:the coding screen
Operator:working

410
00:20:49,029 --> 00:20:51,619
in contrast to reactive seams here we
與這裡的反應性接縫相反

411
00:20:51,819 --> 00:20:53,750
produce only one object because Java
只產生一個物件，因為Java 

412
00:20:53,950 --> 00:20:57,440
streams is just push only models so we
流只是推模型，所以我們

413
00:20:57,640 --> 00:21:00,980
don't have to create subscription here
不必在這裡創建訂閱

414
00:21:01,180 --> 00:21:04,039
and we can just produce one terminal or
我們可以只生產一個終端或

415
00:21:04,240 --> 00:21:08,389
subscriber or operator that notify
通知的訂戶或運營商

416
00:21:08,589 --> 00:21:10,789
publisher or stream to the start sending
發佈者或流媒體開始發送

417
00:21:10,990 --> 00:21:13,909
data and at runtime face we have almost
資料，在運行時我們幾乎

418
00:21:14,109 --> 00:21:16,879
similar behavior we just send in data
我們只是發送資料而產生的類似行為

419
00:21:17,079 --> 00:21:19,250
through our pipeline and produce and
通過我們的管道，生產和

420
00:21:19,450 --> 00:21:24,289
elements through our stream however the
流中的元素，但是

421
00:21:24,490 --> 00:21:27,379
main difference between between Java
 Java之間的主要區別

422
00:21:27,579 --> 00:21:29,659
streams and reactive streams and the
流和反應流以及

423
00:21:29,859 --> 00:21:33,589
main in order to show the main overhead
為了顯示主要開銷

424
00:21:33,789 --> 00:21:36,559
of all the streaming is by comparing
所有流媒體通過比較

425
00:21:36,759 --> 00:21:38,839
imperative streams or plain imperative
命令流或普通命令

426
00:21:39,039 --> 00:21:40,789
programming the plane for loops that we
對平面進行迴圈程式設計

427
00:21:40,990 --> 00:21:44,629
can write in order to iterate over
可以寫以便反覆運算
Iterate:to explain something
428
00:21:44,829 --> 00:21:47,659
the re and at that stage we don't have
稀土，在那個階段我們還沒有

429
00:21:47,859 --> 00:21:49,309
any assembling they don't have any
他們沒有任何組裝

430
00:21:49,509 --> 00:21:51,859
subscription we just processing data and
訂閱我們只是處理資料和

431
00:21:52,059 --> 00:21:54,919
the see that that's it and the overhead
看到的就是這樣和開銷

432
00:21:55,119 --> 00:21:57,349
is minimal and the overhead is just
是最小的，開銷只是

433
00:21:57,549 --> 00:21:59,149
element that we produce in and
我們在其中產生的元素

434
00:21:59,349 --> 00:22:01,789
processing during the iteration so
在反覆運算過程中進行處理

435
00:22:01,990 --> 00:22:05,210
accountants in fact we can do some basic
會計師實際上我們可以做一些基本的事情

436
00:22:05,410 --> 00:22:07,940
math in order to understand what
數學以瞭解什麼

437
00:22:08,140 --> 00:22:10,669
overhead we can can have
我們可以擁有的開銷

438
00:22:10,869 --> 00:22:13,338
in terms of produced produce it number
按生產數量計算

439
00:22:13,538 --> 00:22:16,188
object so faretta streams usually
物件如此法拉塔流通常

440
00:22:16,388 --> 00:22:19,909
creates and elements so analogical
創造和元素如此類比
Analogical:no numbers; opposite of digital
441
00:22:20,109 --> 00:22:22,058
elements that goes through the pipeline
流水線中的元素

442
00:22:22,259 --> 00:22:26,149
we create em operators which means we
我們創建em運算子，這意味著我們

443
00:22:26,349 --> 00:22:29,419
create em subscribers and subscriptions
創建em訂閱者和訂閱

444
00:22:29,619 --> 00:22:34,789
and in some in some cases we create some
在某些情況下，我們創建了一些

445
00:22:34,990 --> 00:22:37,369
additional so and I mean like we produce
另外，所以我的意思是像我們生產

446
00:22:37,569 --> 00:22:41,479
em up we produce em object operators
 em up我們產生em物件運算子

447
00:22:41,679 --> 00:22:46,250
which is M publisher for each four for
每四個是M發佈者

448
00:22:46,450 --> 00:22:48,438
each operator we create in publisher and
我們在發佈商中創建的每個運營商，以及

449
00:22:48,638 --> 00:22:52,399
for each for each subscription stage we
對於每個訂閱階段的每個
Subscription: 訂閱
450
00:22:52,599 --> 00:22:55,879
provide a wrapper around ever around
提供包裝

451
00:22:56,079 --> 00:22:59,000
subscriber and in some cases we provide
訂戶，在某些情況下，我們提供

452
00:22:59,200 --> 00:23:01,639
an additional subscriptions so let me
額外的訂閱，讓我

453
00:23:01,839 --> 00:23:04,068
show you how it works under the hood in
告訴你它是如何在引擎蓋下工作的

454
00:23:04,269 --> 00:23:07,969
order to explain what is why we have
為了解釋為什麼我們有

455
00:23:08,169 --> 00:23:11,598
that much objects during the buildin
建造期間有那麼多物體

456
00:23:11,798 --> 00:23:14,149
reactive pipeline so if you're going to
反應性管道，所以如果您要

457
00:23:14,349 --> 00:23:19,149
to look at this plain stream everywhere
到處看看這條平淡的溪流

458
00:23:19,349 --> 00:23:22,818
put this here and let's just write a few
放在這裡，讓我們寫一些

459
00:23:23,019 --> 00:23:27,379
mappers we is function identity and for
映射器，我們是函數身份，並且
Mappers:talking about realtionships
460
00:23:27,579 --> 00:23:29,358
example Fiona knife
例如菲奧娜刀

461
00:23:29,558 --> 00:23:35,240
filters like that from the first glance
乍一看像這樣的篩檢程式

462
00:23:35,440 --> 00:23:39,678
it seems that on this you don't have any
似乎在此您沒有任何

463
00:23:39,878 --> 00:23:43,219
overhead so far but if it take a look on
到目前為止的開銷，但如果要看一下

464
00:23:43,419 --> 00:23:44,959
what is going on under the hood we will
我們將在引擎蓋下發生什麼

465
00:23:45,159 --> 00:23:48,229
see that each publisher each current
看到每個發佈者每個最新

466
00:23:48,429 --> 00:23:51,318
publisher on every map call on every
發佈商在每個地圖上的每個調用

467
00:23:51,519 --> 00:23:54,078
filter call call on every operator call
在每個操作員呼叫上過濾呼叫

468
00:23:54,278 --> 00:23:58,369
drops using another operator so
使用另一個運算子刪除

469
00:23:58,569 --> 00:23:59,869
basically what is going on we are
基本上發生了什麼事

470
00:24:00,069 --> 00:24:02,869
producing the objects chain which
生產物件鏈

471
00:24:03,069 --> 00:24:05,509
delegates all the invocation of all
委託所有的調用
Delegates(V):to give job to other computers

472
00:24:05,710 --> 00:24:09,048
methods the same behave for for chaining
用於連結的相同方法

473
00:24:09,249 --> 00:24:11,269
our subscribers so we receive the
我們的訂戶，因此我們收到

474
00:24:11,470 --> 00:24:13,789
subscriber and you rub this subscriber
訂閱者，您可以摩擦此訂閱者

475
00:24:13,990 --> 00:24:16,848
into another into another business logic
融入另一個業務邏輯

476
00:24:17,048 --> 00:24:20,328
or into map subscriber in this case we
或在這種情況下進入地圖訂戶

477
00:24:20,528 --> 00:24:23,299
have some optimization of course in in
當然有一些優化

478
00:24:23,500 --> 00:24:24,190
reactive 3
反應性3 

479
00:24:24,390 --> 00:24:26,980
and from time to time plane operators
以及不時的飛機運營商

480
00:24:27,180 --> 00:24:30,069
includes and combines at the same time a
同時包含和合併一個

481
00:24:30,269 --> 00:24:34,359
consumer or or subscriber logic and
消費者或訂閱者邏輯，以及

482
00:24:34,559 --> 00:24:36,669
producer or subscription logic and in
生產者或訂閱邏輯以及

483
00:24:36,869 --> 00:24:39,279
that way we reduce the number of created
這樣我們減少了創建的數量

484
00:24:39,480 --> 00:24:42,460
or and producing objects but when we do
或生成物件，但是當我們這樣做時

485
00:24:42,660 --> 00:24:45,129
some multi-threading data processing
一些多執行緒資料處理

486
00:24:45,329 --> 00:24:48,639
like we are sending data through publish
就像我們通過發佈發送資料一樣

487
00:24:48,839 --> 00:24:51,579
on or similar similar operators in this
或與此類似的類似運算子

488
00:24:51,779 --> 00:24:53,349
in this case as we can create some
在這種情況下，我們可以創建一些

489
00:24:53,549 --> 00:24:55,509
additional subscribers and some
其他訂戶和一些

490
00:24:55,710 --> 00:24:57,450
additional subscriptions which produce
產生額外訂閱

491
00:24:57,650 --> 00:25:00,700
one more which produce one more objects
一個又一個產生另一個物體

492
00:25:00,900 --> 00:25:05,250
object to you to the garbage collector
反對您到垃圾收集器

493
00:25:05,450 --> 00:25:08,680
in contrast Java streams is a little bit
相反，Java流有點

494
00:25:08,880 --> 00:25:12,339
simpler so on average we just create an
比較簡單，因此平均而言，我們只需創建一個

495
00:25:12,539 --> 00:25:15,789
element during runtime and produce one
元素在運行時產生一個

496
00:25:15,990 --> 00:25:18,159
one more wrapper for every operator
每個操作員再包裝一個

497
00:25:18,359 --> 00:25:23,019
because Java streams almost design it in
因為Java流幾乎在其中進行設計

498
00:25:23,220 --> 00:25:25,569
the same way or reactive streams design
以相同的方式或反應流設計

499
00:25:25,769 --> 00:25:27,789
it in the same vein way as Java streams
它與Java流的方式相同

500
00:25:27,990 --> 00:25:31,259
so their overhead are pretty similar
所以他們的開銷非常相似

501
00:25:31,460 --> 00:25:35,049
finally for imperative data processing
最後用於命令式資料處理

502
00:25:35,250 --> 00:25:37,119
we just create only n elements and
我們只創建n個元素， 

503
00:25:37,319 --> 00:25:39,609
that's it and we reduce the number of
就是這樣，我們減少了

504
00:25:39,809 --> 00:25:42,369
producing objects for you can imagine
為您想像的物體

505
00:25:42,569 --> 00:25:44,919
how many operators you are using in your
您正在使用多少個運算子

506
00:25:45,119 --> 00:25:47,319
in your reactive application at
在您的反應性應用程式中

507
00:25:47,519 --> 00:25:50,169
production and you can reduce by using
生產，您可以通過減少使用

508
00:25:50,369 --> 00:25:53,289
the plain imperative programming you can
您可以進行簡單的命令式程式設計

509
00:25:53,490 --> 00:25:56,190
reduce the number of created objects a
減少創建對象的數量

510
00:25:56,390 --> 00:26:02,950
little bit of course so after this with
當然，所以在此之後

511
00:26:03,150 --> 00:26:05,559
this intro to what is going on inside
這個介紹裡面發生了什麼

512
00:26:05,759 --> 00:26:09,539
reactive streams we have to ask yourself
反應流我們必須問自己

513
00:26:09,740 --> 00:26:13,119
where this object overhead imparts
該物件開銷產生的地方

514
00:26:13,319 --> 00:26:15,069
performance and why should we care about
性能以及我們為什麼要關心

515
00:26:15,269 --> 00:26:18,940
how many objects we produce to to in our
我們生產到多少物體

516
00:26:19,140 --> 00:26:23,289
in our application so usually when we
通常在我們的應用程式中

517
00:26:23,490 --> 00:26:26,169
build plain spring applications when we
當我們建立簡單的spring應用程式時

518
00:26:26,369 --> 00:26:28,930
do when we create a plain crud
當我們創建一個簡單的結局時要做
Crud:very bad(口語)
519
00:26:29,130 --> 00:26:32,409
application B I usually write something
應用程式BI通常會寫一些東西

520
00:26:32,609 --> 00:26:35,889
like that so we create a plane for
這樣，我們為

521
00:26:36,089 --> 00:26:37,930
example post math and that a SAP
示例後數學和一個SAP 

522
00:26:38,130 --> 00:26:40,389
one one object a synchronous in that
一個物件在其中同步

523
00:26:40,589 --> 00:26:42,250
case so we receive Mona
案例，所以我們收到蒙娜麗莎

524
00:26:42,450 --> 00:26:46,079
for example of some order and after some
例如一些命令和一些之後

525
00:26:46,279 --> 00:26:48,519
protests and we returned that Mona
抗議，我們返回了蒙娜麗莎

526
00:26:48,720 --> 00:26:52,779
however we since we like general idea of
但是我們既然喜歡

527
00:26:52,980 --> 00:26:54,940
reactive programming which means some
反應式程式設計，這意味著一些

528
00:26:55,140 --> 00:26:58,569
functional piping where we can where we
功能性管道我們可以在哪裡

529
00:26:58,769 --> 00:27:01,719
can separate all all the stages of data
可以分離所有資料階段

530
00:27:01,919 --> 00:27:03,879
processing on the separate on the
分開處理

531
00:27:04,079 --> 00:27:07,088
separate maps maps for example we can
單獨的地圖，例如我們可以

532
00:27:07,288 --> 00:27:11,079
write something like that and you should
寫這樣的東西，你應該

533
00:27:11,279 --> 00:27:14,259
wonder why should we care what how can
想知道為什麼我們應該關心如何

534
00:27:14,460 --> 00:27:16,598
this code impact the performance however
該代碼會影響性能

535
00:27:16,798 --> 00:27:20,680
if you murder that plain application you
如果您謀殺了那個簡單的應用程式，那麼您

536
00:27:20,880 --> 00:27:23,950
will get for example something like
例如會得到類似

537
00:27:24,150 --> 00:27:27,819
those benchmarks so in that case let me
這些基準，所以在那種情況下讓我
Benchmarks:base/it test for some coding
538
00:27:28,019 --> 00:27:30,358
explain shortly what is going on here
簡短地解釋這裡發生了什麼

539
00:27:30,558 --> 00:27:33,848
currently I'm showing you a J image Java
目前，我正在向您展示J圖像Java 

540
00:27:34,048 --> 00:27:38,129
linker benchmark of imperative
命令連結基準
Linker:two hold together
Imperative:need to/ must do
541
00:27:38,329 --> 00:27:41,619
imperative code that doing the same the
命令式的代碼也一樣

542
00:27:41,819 --> 00:27:44,319
same business logic as you have seen on
與您看到的相同的業務邏輯

543
00:27:44,519 --> 00:27:45,279
this slide
這張幻燈片

544
00:27:45,480 --> 00:27:50,169
not this slide but this exactly the same
不是這張幻燈片，而是完全一樣的

545
00:27:50,369 --> 00:27:52,869
execution of exactly the same methods
執行完全相同的方法

546
00:27:53,069 --> 00:27:57,669
like here versus this code that you have
像這裡與您擁有的這段代碼

547
00:27:57,869 --> 00:28:00,848
seen just a moment ago versus the stream
剛剛在流中看到
Versus(副詞):to compare two things by fighting
548
00:28:01,048 --> 00:28:03,399
of in this case of two elements because
在這種情況下有兩個元素，因為

549
00:28:03,599 --> 00:28:05,950
I had to to create a stream of two
我必須創建兩個流

550
00:28:06,150 --> 00:28:07,809
elements in order to show you a
元素以向您展示

551
00:28:08,009 --> 00:28:11,049
performant impact and if you do some
績效影響，如果您做了一些

552
00:28:11,250 --> 00:28:14,259
basic math if we compare the performance
基本數學，如果我們比較性能

553
00:28:14,460 --> 00:28:18,430
of two of those of those programs we
這些程式中的兩個

554
00:28:18,630 --> 00:28:21,419
will see that overhead of reactive
會看到反應性的開銷

555
00:28:21,619 --> 00:28:25,869
pipeline is about 15% versus in plain
與普通管道相比，管道大約占15％ 

556
00:28:26,069 --> 00:28:29,289
imperative program is the same identical
命令式程式是相同的

557
00:28:29,490 --> 00:28:31,419
business logic so now you should think
業務邏輯，所以現在您應該考慮

558
00:28:31,619 --> 00:28:35,079
whether I have to write that much
我是否必須寫那麼多

559
00:28:35,279 --> 00:28:39,279
reactive operators in my pipeline have
我的管道中的反應堆操作員有

560
00:28:39,480 --> 00:28:44,469
other sometimes like this is an example
其他有時像這樣的例子

561
00:28:44,669 --> 00:28:47,950
of just two element stream Webber in
 Webber中只有兩個元素流

562
00:28:48,150 --> 00:28:51,069
other in reality we have a pipelines of
在現實中，我們有

563
00:28:51,269 --> 00:28:51,549
long
長

564
00:28:51,750 --> 00:28:54,069
in streams for example from time to time
例如在流中

565
00:28:54,269 --> 00:28:56,740
from time to time we can protest ten
我們不時可以抗議十

566
00:28:56,940 --> 00:29:01,180
elements or even 100 elements and for
元素甚至100個元素，並且

567
00:29:01,380 --> 00:29:04,269
example for ten elements pipeline we
十元素流水線的例子

568
00:29:04,470 --> 00:29:06,460
have only six percent overhead which is
只有百分之六的開銷

569
00:29:06,660 --> 00:29:10,269
better and if we have really long drawn
更好，如果我們真的很久了

570
00:29:10,470 --> 00:29:12,460
in stream for example I need a
例如在流中，我需要一個

571
00:29:12,660 --> 00:29:14,470
performance measurement of the same
相同的性能測量

572
00:29:14,670 --> 00:29:17,470
pipeline of maps versus the same
地圖管線與相同

573
00:29:17,670 --> 00:29:19,480
business logic written in imperative
勢在必行的業務邏輯

574
00:29:19,680 --> 00:29:24,669
style but true but but in that case the
風格，但真實，但在那種情況下

575
00:29:24,869 --> 00:29:28,839
business logic were processing the
業務邏輯正在處理

576
00:29:29,039 --> 00:29:30,879
business logic was protesting 1 million
業務邏輯抗議100萬

577
00:29:31,079 --> 00:29:34,169
elements and by measuring these
元素並通過測量這些

578
00:29:34,369 --> 00:29:37,269
applications we will get around we will
我們將解決的應用程式

579
00:29:37,470 --> 00:29:39,609
get only 3 percent of overhead which
僅獲得3％的間接費用

580
00:29:39,809 --> 00:29:43,839
means the more elements we have in our
意味著我們擁有更多的元素

581
00:29:44,039 --> 00:29:48,940
pipeline the more the the more long run
流水線越多，執行時間越長

582
00:29:49,140 --> 00:29:52,889
in our pipeline is the last overhead we
我們管道中的最後一筆開銷是

583
00:29:53,089 --> 00:29:58,169
we get during the processing of of our
我們在處理我們的過程中得到

584
00:29:58,369 --> 00:30:00,309
during the business logic in our
在我們的業務邏輯中

585
00:30:00,509 --> 00:30:03,299
application which means heaven only
僅意味著天堂的應用

586
00:30:03,500 --> 00:30:07,180
heaven only one or plane crude oil
天堂只有一種或飛機原油

587
00:30:07,380 --> 00:30:10,599
application which handles element which
處理元素的應用程式

588
00:30:10,799 --> 00:30:13,869
handles 101 post requests using magic and
使用魔法處理101個帖子請求

589
00:30:14,069 --> 00:30:16,359
respond to using mono can impact your
回應使用單聲道可能會影響您
Mono:one ear
590
00:30:16,559 --> 00:30:21,639
performance a lot around 15% and in case
表現大約15％，以防萬一

591
00:30:21,839 --> 00:30:23,500
you're right in real streaming
你是真正的流媒體

592
00:30:23,700 --> 00:30:27,899
application real fast long running pipes
應用程式真正快速，長期運行的管道

593
00:30:28,099 --> 00:30:31,269
which doesn't create on every request a
並非在每個請求上都創建一個

594
00:30:31,470 --> 00:30:33,460
new stream in that case you will get
在這種情況下，您將獲得新的流

595
00:30:33,660 --> 00:30:37,119
around 3% overhead all right
大約3％的開銷

596
00:30:37,319 --> 00:30:41,349
however if we write if we create if we
但是如果我們寫，如果我們創建，如果我們

597
00:30:41,549 --> 00:30:44,649
put up all those measurements on 
將所有這些測量值放在

598
00:30:44,849 --> 00:30:48,629
the on the plot we will see some
在情節上，我們將看到一些
Plot:趨勢線的點
599
00:30:48,829 --> 00:30:51,629
dependency between the data and
數據與
Dependency:you need something every date
600
00:30:51,829 --> 00:30:55,019
of course if we produce provide some or
當然如果我們生產提供一些或

601
00:30:55,220 --> 00:30:58,119
continue monitoring continue measure
繼續監測，繼續衡量

602
00:30:58,319 --> 00:31:00,579
doing some measurements with reactive
用電抗做一些測量

603
00:31:00,779 --> 00:31:03,460
pipelines and imperative pipelines for
的管道和命令式管道

604
00:31:03,660 --> 00:31:05,559
reactive pipelines we will see
反應性管道，我們將看到

605
00:31:05,759 --> 00:31:09,399
that it's for the short number of
這是為數不多的

606
00:31:09,599 --> 00:31:12,519
elements or for just a few numbers few
元素或僅少數幾個

607
00:31:12,720 --> 00:31:14,799
numbers of elements in the stream we
流中元素的數量

608
00:31:15,000 --> 00:31:16,839
will have a really huge overhead but
會有很大的開銷，但是

609
00:31:17,039 --> 00:31:19,259
once we get more and more elements
一旦我們得到越來越多的元素

610
00:31:19,460 --> 00:31:23,349
within one stream you'll approximately
在一個流中，您大約
Approximately: 大約

611
00:31:23,549 --> 00:31:27,639
goes to to some trend and to some basic
走向某種趨勢和一些基本

612
00:31:27,839 --> 00:31:31,240
overhead for for streaming for example
例如資料流的開銷

613
00:31:31,440 --> 00:31:33,639
in that case is overhead will be 4 4
在這種情況下，開銷將是4 4 

614
00:31:33,839 --> 00:31:37,619
maps will be around 2 or 3 percent and
地圖將約為2％或3％， 

615
00:31:37,819 --> 00:31:42,069
now you should wonder what else causes
現在你應該懷疑還有什麼原因

616
00:31:42,269 --> 00:31:45,480
those overhead because in caso 10
這些開銷是因為在caso 10中

617
00:31:45,680 --> 00:31:48,339
millions of elements within the stream
流中數百萬個元素

618
00:31:48,539 --> 00:31:50,680
our stream will be really long-lived
我們的流將是長壽的

619
00:31:50,880 --> 00:31:54,579
and garbage collector won't do any
和垃圾收集器不會做任何事情

620
00:31:54,779 --> 00:31:58,200
additional additional work for for
的其他額外工作

621
00:31:58,400 --> 00:32:01,980
creating and allocating and deallocating
創建，分配和取消分配

622
00:32:02,180 --> 00:32:05,349
the publisher and subscriber and all
發佈者和訂閱者以及所有

623
00:32:05,549 --> 00:32:09,339
real all reactive all related elements
真實所有反應性所有相關元素

624
00:32:09,539 --> 00:32:11,919
to react to streams so what else can
對流做出反應，還有什麼可以

625
00:32:12,119 --> 00:32:14,889
cause the this overhead for reactive
造成這種反應性的開銷

626
00:32:15,089 --> 00:32:18,039
pipelines in order to understand that we
管道，以瞭解我們

627
00:32:18,240 --> 00:32:21,389
have to to go deeper and we have to
必須更深入，我們必須

628
00:32:21,589 --> 00:32:23,440
understand what is going on within
瞭解內在發生了什麼

629
00:32:23,640 --> 00:32:25,180
runtime face
運行時臉

630
00:32:25,380 --> 00:32:28,450
so basically when we build a pipeline we
所以基本上當我們建立管道時

631
00:32:28,650 --> 00:32:30,519
produce a few objects like from our a
產生一些像從我們的

632
00:32:30,720 --> 00:32:33,879
map map subscribe and adjust this stage
地圖地圖訂閱並調整此階段

633
00:32:34,079 --> 00:32:36,490
when we start saying in data we will
當我們開始在資料中說時，我們將

634
00:32:36,690 --> 00:32:38,529
have something like this we will have
有這樣的事情，我們將有

635
00:32:38,730 --> 00:32:42,279
basically invocation of first map and we
基本上是調用第一個地圖，我們

636
00:32:42,480 --> 00:32:44,889
will have some sand in of circles after
之後會有一些沙子

637
00:32:45,089 --> 00:32:47,799
this in order to apply my pain we will
為了減輕我的痛苦，我們將

638
00:32:48,000 --> 00:32:50,829
have to you to apply function provided
必須您應用所提供的功能

639
00:32:51,029 --> 00:32:54,399
to you to our publisher so we actually
給你給我們的出版商，所以我們實際上

640
00:32:54,599 --> 00:32:57,639
apply business logic by martin by map in
通過地圖在馬丁中應用業務邏輯

641
00:32:57,839 --> 00:33:00,339
one element to another and after all we
一個元素到另一個元素，畢竟我們

642
00:33:00,539 --> 00:33:02,259
will call another subscriber which is
將呼叫另一個訂戶

643
00:33:02,460 --> 00:33:05,619
downstream subscriber by calling on next
通過呼叫下一個下游訂戶
Downstream:start from the mountain(coder) down to the user
Upstream:the user to the coder
644
00:33:05,819 --> 00:33:08,109
masterpiece choir after some mapping and
一些映射後的傑作合唱團和
Masterpiece:something is perfect
645
00:33:08,309 --> 00:33:11,049
after all we will call another on next
畢竟我們接下來會打電話給另一個人

646
00:33:11,250 --> 00:33:13,329
after mapping and so forth and so on so
映射之後等等，依此類推

647
00:33:13,529 --> 00:33:15,839
basically what is what is happening is
基本上發生了什麼

648
00:33:16,039 --> 00:33:18,490
chaining of masses
群眾鏈
chaining of masses=to put something together

649
00:33:18,690 --> 00:33:20,470
because as you can remember from from
因為您可以從中記住

650
00:33:20,670 --> 00:33:24,119
previous part is ever that we have
前一部分是我們擁有的

651
00:33:24,319 --> 00:33:28,000
basically a chain of of responsibility
基本上是責任鏈

652
00:33:28,200 --> 00:33:30,519
within overactive streams so basically
在過度活躍的流中，所以基本上

653
00:33:30,720 --> 00:33:32,289
in order to you for example request
為了您的要求

654
00:33:32,490 --> 00:33:34,829
elements we will have to cook to cut
我們必須煮的元素

655
00:33:35,029 --> 00:33:37,419
every subscription and request n
每個訂閱和請求n 

656
00:33:37,619 --> 00:33:40,389
elements on average through every rapper
每個說唱歌手的平均元素

657
00:33:40,589 --> 00:33:44,559
until we get T to final publisher and
直到我們將T交給最終發佈者為止， 

658
00:33:44,759 --> 00:33:47,440
publisher will call on next method on
發佈者將在上調用下一個方法

659
00:33:47,640 --> 00:33:49,980
our subscriber ease the element and
我們的訂戶簡化了元素， 

660
00:33:50,180 --> 00:33:52,480
after all what we will have we will have
畢竟我們將擁有我們將擁有

661
00:33:52,680 --> 00:33:55,269
another chain of invocation which will
另一個調用鏈
Invocation:to call something out
662
00:33:55,470 --> 00:33:57,970
be invocation of next method through all
全部調用下一個方法

663
00:33:58,170 --> 00:34:00,730
available or chain and subscribers
可用或連鎖和訂戶

664
00:34:00,930 --> 00:34:03,700
within our pipeline until we get again
在我們的管道中，直到我們再次得到

665
00:34:03,900 --> 00:34:05,829
to request method and we will get the
請求方法，我們將獲得

666
00:34:06,029 --> 00:34:08,350
same picture as before and so for and so
與以前一樣的照片等等

667
00:34:08,550 --> 00:34:12,010
on until we produced all the data so
直到我們生成所有資料為止

668
00:34:12,210 --> 00:34:15,010
basically let me quickly show you what
基本上讓我快速向您展示

669
00:34:15,210 --> 00:34:22,300
is going on here so as I said here we
就像我在這裡說的那樣

670
00:34:22,500 --> 00:34:27,000
have some basic our basic PI point and
有一些基本的基本PI點

671
00:34:27,199 --> 00:34:32,200
if we let me go quickly to our lambda
如果我們讓我快速進入lambda 

672
00:34:32,400 --> 00:34:35,260
subscriber and put a breakpoint here and
訂戶並在此處放置一個中斷點，然後
Breakpoint:one point to make something to break
673
00:34:35,460 --> 00:34:41,560
write our stream and yeah here we go we
寫我們的流，是的，我們走了

674
00:34:41,760 --> 00:34:44,470
subscribe to our stream now we are going
訂閱我們的流，現在我們要

675
00:34:44,670 --> 00:34:47,620
to the chain of our subscriptions so
到我們的訂閱鏈

676
00:34:47,820 --> 00:34:50,320
this is the bottom of execution this is
這是執行的底部，這是

677
00:34:50,519 --> 00:34:52,870
just the first unsubscribe goal and
只是第一個退訂目標， 

678
00:34:53,070 --> 00:34:55,539
after all we are going to another
畢竟我們要去另一個

679
00:34:55,739 --> 00:34:58,780
subscription which is flux filter which
訂閱是通量篩檢程式

680
00:34:58,980 --> 00:35:01,900
just bypass this request method to
只是繞過這個請求方法

681
00:35:02,099 --> 00:35:05,110
upstream and the same format and the
上游格式相同

682
00:35:05,309 --> 00:35:06,910
same from another map and the same for
在另一張地圖上也一樣

683
00:35:07,110 --> 00:35:09,070
another map and the same for another map
另一張地圖和另一張地圖相同

684
00:35:09,269 --> 00:35:11,760
and another until we get to our
直到我們到達我們的

685
00:35:11,960 --> 00:35:15,310
publisher or actual source of data which
發佈者或實際資料來源

686
00:35:15,510 --> 00:35:18,519
starts and and data and basically this
開始和資料，基本上這

687
00:35:18,719 --> 00:35:22,240
this data sending just ended up with we
這些資料發送最終以我們

688
00:35:22,440 --> 00:35:26,830
is plane on next invocation which looks
在下一次調用時看起來像飛機

689
00:35:27,030 --> 00:35:31,010
like that so let me
這樣，讓我

690
00:35:31,210 --> 00:35:35,210
yeah let me do that yeah here we go here
是的，讓我做到這一點，是的，我們去這裡

691
00:35:35,409 --> 00:35:38,030
we got the first element and here we
我們得到了第一個元素，在這裡我們

692
00:35:38,230 --> 00:35:40,580
start traversing through the business
開始遍歷業務

693
00:35:40,780 --> 00:35:43,280
logic since we here the mapper the
邏輯，因為我們在這裡映射器

694
00:35:43,480 --> 00:35:46,130
mapper is just an identity function so
映射器只是一個身份函數，所以

695
00:35:46,329 --> 00:35:49,760
we don't have so we don't have anything
我們沒有，所以我們什麼都沒有

696
00:35:49,960 --> 00:35:52,970
to do we just execute that function and
要執行該功能， 
Execute:start to make something happen
697
00:35:53,170 --> 00:35:53,510
that's it
而已

698
00:35:53,710 --> 00:35:56,200
then we are going to call another mapper
然後我們要呼叫另一個映射器

699
00:35:56,400 --> 00:35:59,539
through on next and another mapper from
通過下一個和另一個映射器

700
00:35:59,739 --> 00:36:04,090
next and another mapper until we get to
下一個和另一個映射器，直到我們到達

701
00:36:04,289 --> 00:36:08,990
the our filter QB in the filter since
我們在篩檢程式中的篩檢程式品質檢查自

702
00:36:09,190 --> 00:36:11,990
our predicate is always true invocation
我們的謂詞始終是真實的調用
Predicate:語法=-ing
703
00:36:12,190 --> 00:36:15,620
we just receive true we call another
我們只是收到真實的我們叫另一個

704
00:36:15,820 --> 00:36:17,120
unknown next message
未知的下一封郵件

705
00:36:17,320 --> 00:36:20,870
we'll end up with our consumer actual
我們將最終得到我們的消費者

706
00:36:21,070 --> 00:36:24,830
consumer so this demo just basically
消費者，所以這個演示基本上

707
00:36:25,030 --> 00:36:27,919
shows what is going on inside under the
展示了裡面發生了什麼

708
00:36:28,119 --> 00:36:30,260
hood at the runtime and what is going on
運行時的引擎蓋以及正在發生的事情
hood引擎蓋 /fuselage 機車的機車
Runtime:how long to the something for
709
00:36:30,460 --> 00:36:33,050
is just basically sending the element
基本上只是發送元素

710
00:36:33,250 --> 00:36:37,159
through the pipeline of objects of
通過對象的管道

711
00:36:37,358 --> 00:36:39,740
subscribers we just delegate their
訂戶，我們只是委託他們

712
00:36:39,940 --> 00:36:42,139
invocation to another subscriber to
調用另一個訂戶

713
00:36:42,338 --> 00:36:43,940
another subscriber to another subscriber
另一個訂戶到另一個訂戶

714
00:36:44,139 --> 00:36:46,720
until we get the final end point and
直到我們得到最終的終點

715
00:36:46,920 --> 00:36:50,320
that's basically it during the whole
基本上就是整個

716
00:36:50,519 --> 00:36:54,830
data center nothing complex but as you
資料中心沒什麼複雜的

717
00:36:55,030 --> 00:36:57,169
can see basically what we have here is
基本上可以看到我們在這裡

718
00:36:57,369 --> 00:37:00,649
just method invocation so let's back T
只是方法調用，所以讓我們返回T 

719
00:37:00,849 --> 00:37:06,500
to our slides and let's just talk again
到我們的幻燈片，讓我們再說一遍

720
00:37:06,699 --> 00:37:10,730
about overhead and in that case masses
關於開銷，在那種情況下

721
00:37:10,929 --> 00:37:15,889
call overhead as you can know one of the
您可以瞭解其中之一

722
00:37:16,088 --> 00:37:20,240
expensive operate operation in in in
費用昂貴

723
00:37:20,440 --> 00:37:23,899
Java is an imp agreement in general is
 Java是Imp協議，一般來說是

724
00:37:24,099 --> 00:37:26,990
method invocation and maybe heard
方法調用，也許聽到了

725
00:37:27,190 --> 00:37:29,240
something about in line and we're at
關於排隊的事情，我們在

726
00:37:29,440 --> 00:37:31,840
runtime for example in java decompiler
運行時，例如在Java反編譯器中
Decompiler:排序不整齊
de=not
727
00:37:32,039 --> 00:37:34,820
try tries to inline some method
嘗試內聯一些方法

728
00:37:35,019 --> 00:37:37,280
invocation in order to reduce the
調用以減少

729
00:37:37,480 --> 00:37:40,280
overhead that we get by calling the
我們通過調用

730
00:37:40,480 --> 00:37:41,060
methods
方法

731
00:37:41,260 --> 00:37:43,930
so in general to summarize what
所以總的來說總結一下

732
00:37:44,130 --> 00:37:46,850
overhead-cam squeeze with the stream in
高架攝像頭擠壓流中
overhead-cam= overhead-camera
squeeze: push something together
733
00:37:47,050 --> 00:37:49,730
parody corrective streams we have in
我們擁有的模仿糾正流

734
00:37:49,929 --> 00:37:53,510
general and massive as mm on next method
在下一個方法上一般且品質為mm 

735
00:37:53,710 --> 00:37:56,000
invocation on our subscriber because
調用我們的訂戶，因為

736
00:37:56,199 --> 00:38:00,440
we're amp means the number or equals to
我們是amp表示數字等於

737
00:38:00,639 --> 00:38:03,650
the number of produces operators in our
我們生產經營者的數量

738
00:38:03,849 --> 00:38:07,400
app in our pipeline internally have an
我們管道中的應用內部有一個

739
00:38:07,599 --> 00:38:10,100
invocation of real function which means
調用實函數，這意味著

740
00:38:10,300 --> 00:38:13,220
invocation of real business logic and we
調用真實的業務邏輯，我們

741
00:38:13,420 --> 00:38:16,730
have M invocation of request method
具有請求方法的M調用

742
00:38:16,929 --> 00:38:21,320
method because M could be only one
方法，因為M可能只有一個

743
00:38:21,519 --> 00:38:23,390
invocation and the very beginning will
調用和一開始的意願

744
00:38:23,590 --> 00:38:26,690
be very just success okay give me all
非常成功就可以了

745
00:38:26,889 --> 00:38:29,840
you have by sending one max value or we
您可以發送一個最大值，或者我們

746
00:38:30,039 --> 00:38:35,750
can send request 1 1 1 1 1 on every
可以在每個發送請求1 1 1 1 1 

747
00:38:35,949 --> 00:38:37,909
element we received so in that way we
我們收到的元素，這樣我們

748
00:38:38,108 --> 00:38:42,680
can just we can just have pool playing
我們可以玩檯球嗎

749
00:38:42,880 --> 00:38:47,269
pool model but these reactive streams so
池模型，但是這些反應流

750
00:38:47,469 --> 00:38:49,789
it depends in many in many cases we are
在許多情況下，這取決於我們

751
00:38:49,989 --> 00:38:51,830
going to take to look at those cases a
要看那些情況

752
00:38:52,030 --> 00:38:52,909
little bit later
稍後

753
00:38:53,108 --> 00:38:55,130
but in general we have some overhead in
但總的來說，我們在

754
00:38:55,329 --> 00:38:58,600
method invocation in interactive streams
互動式流中的方法調用

755
00:38:58,800 --> 00:39:02,750
comparing to you to Java streams Java
與Java流進行比較

756
00:39:02,949 --> 00:39:06,019
streams has only two two basic
流只有兩個兩個基本

757
00:39:06,219 --> 00:39:08,510
indications which means sing invocation
表示需要調用的指示

758
00:39:08,710 --> 00:39:10,780
or calling cinq a Sept method for
或將cinq稱為Sept方法

759
00:39:10,980 --> 00:39:12,710
element it could be a little bit
元素可能會有點

760
00:39:12,909 --> 00:39:15,680
different so it could it can depend on
不同，所以它可以取決於

761
00:39:15,880 --> 00:39:19,280
some some operators within within Java
 Java中的一些運算子

762
00:39:19,480 --> 00:39:21,230
strings but basically in just one
字串，但基本上只有一個

763
00:39:21,429 --> 00:39:24,650
invocation on just an invocation for
調用僅用於

764
00:39:24,849 --> 00:39:29,090
every element on the on the consumer
消費者的每一個要素

765
00:39:29,289 --> 00:39:32,060
data consumer we is an invocation of
資料使用者，我們是一個調用

766
00:39:32,260 --> 00:39:34,460
real business logic or real function
真實的業務邏輯或真實功能

767
00:39:34,659 --> 00:39:37,970
which does which does some business
哪個做些生意

768
00:39:38,170 --> 00:39:41,269
logic for you and finally comparative
邏輯，最後比較

769
00:39:41,469 --> 00:39:43,510
imperative programming we just have an
命令式程式設計我們只有一個

770
00:39:43,710 --> 00:39:47,870
invocation of real functions and as you
調用真實函數，並隨您

771
00:39:48,070 --> 00:39:50,320
can can understand
可以理解

772
00:39:50,519 --> 00:39:53,019
in that case where we have just plain
在那種情況下，我們只有

773
00:39:53,219 --> 00:39:57,090
method Colin the JIT can work well ver
方法Colin JIT可以很好地工作

774
00:39:57,289 --> 00:40:00,159
with Java streams and the reactive
與Java流和反應式

775
00:40:00,358 --> 00:40:02,680
streams in lining of all this Colin
在所有這些科林的襯裡裡流

776
00:40:02,880 --> 00:40:04,450
within the sink and within the
在水槽內和

777
00:40:04,650 --> 00:40:07,419
subscribers can can be a little bit
訂戶可以有點

778
00:40:07,619 --> 00:40:08,340
challenging
具有挑戰性的

779
00:40:08,539 --> 00:40:11,830
so to summarize in general for active
所以總結一下主動

780
00:40:12,030 --> 00:40:15,070
streams we have around 3x overhead in
流，我們的開銷約為3倍
3x=three times
781
00:40:15,269 --> 00:40:18,789
method invocation in general we have to
一般而言，方法調用

782
00:40:18,989 --> 00:40:20,980
produce far more instructions that for
產生更多的指令

783
00:40:21,179 --> 00:40:23,880
plain Traverse in others they over them
在其他人中橫行他們
Traverse:name
784
00:40:24,079 --> 00:40:27,310
in the for loop for example as you have
例如，在for迴圈中

785
00:40:27,510 --> 00:40:29,440
seen we have a lot of verification
看到我們有很多驗證

786
00:40:29,639 --> 00:40:32,139
inside inside a next method for mapper
在內部的下一個映射器方法

787
00:40:32,338 --> 00:40:36,130
inside inside the next method for filter
裡面裡面下一個過濾方法

788
00:40:36,329 --> 00:40:38,800
and I'm not talking about more complex
我不是說更複雜

789
00:40:39,000 --> 00:40:42,159
operator like flat map or or publish on
運算子，例如平面圖或發佈於

790
00:40:42,358 --> 00:40:46,659
and so for and so on and in general came
等等等等，一般來說

791
00:40:46,858 --> 00:40:49,630
in this party and having this chain of
在這個聚會上，並擁有

792
00:40:49,829 --> 00:40:52,419
responsibility of invocation of business
營業責任

793
00:40:52,619 --> 00:40:55,330
logic in a variety of pipeline we have
在各種管道中的邏輯

794
00:40:55,530 --> 00:40:58,330
less change chance T to get the proper
更少的改變機會T以得到適當的

795
00:40:58,530 --> 00:41:02,440
in line in a trot and Tron time by G
在小跑和Tron時間中符合G 

796
00:41:02,639 --> 00:41:05,639
compiler just-in-time time compiler and
編譯器即時編譯器和

797
00:41:05,838 --> 00:41:09,610
which means that here we have we can
這意味著在這裡我們可以

798
00:41:09,809 --> 00:41:12,310
have this three percent overhead for
有這百分之三的開銷

799
00:41:12,510 --> 00:41:15,700
example for only four mappers or we can
僅用於四個映射器的示例，否則我們可以

800
00:41:15,900 --> 00:41:19,210
have even more runtime overhead for or
甚至有更多的運行時開銷

801
00:41:19,409 --> 00:41:24,130
invocation overhead when we have far for
當我們有遠的時候調用開銷

802
00:41:24,329 --> 00:41:26,380
more operator in our pipeline when we
當我們在管道中有更多的運營商

803
00:41:26,579 --> 00:41:29,230
can be when we are doing a real business
可能是當我們做真實的生意時

804
00:41:29,429 --> 00:41:33,010
logic potassium so to show you the
邏輯鉀所以給你看

805
00:41:33,210 --> 00:41:36,810
possible overhead then that you can can
可能的開銷，那麼你可以

806
00:41:37,010 --> 00:41:42,250
have and that overhead that comes in
有，而來的開銷

807
00:41:42,449 --> 00:41:48,039
this example is basically based on the
這個例子基本上是基於

808
00:41:48,239 --> 00:41:51,190
invocation and yeah basically on some
調用，是的，基本上

809
00:41:51,389 --> 00:41:54,130
invocations of free active streams and
免費活動流的調用和

810
00:41:54,329 --> 00:41:56,710
basically on some additional operators
基本上是一些額外的運營商

811
00:41:56,909 --> 00:42:00,490
of course we when we write a lot of
當然，當我們寫很多

812
00:42:00,690 --> 00:42:03,930
operators the runtime will be
操作員運行時將是

813
00:42:04,130 --> 00:42:07,060
much more complex than in plain
比平原要複雜得多

814
00:42:07,260 --> 00:42:10,030
imperative programming however the plain
命令式程式設計，但是簡單

815
00:42:10,230 --> 00:42:13,150
runtime like playing series of maps and
運行時喜歡玩一系列的地圖和

816
00:42:13,349 --> 00:42:16,090
filters can't produce that huge overhead
篩檢程式無法產生那麼大的開銷

817
00:42:16,289 --> 00:42:19,630
that we can see it is in this benchmark
我們可以看到它是在此基準測試中

818
00:42:19,829 --> 00:42:23,440
of scrabbles in order to understand
拼字遊戲以瞭解
Scrabbles:name
819
00:42:23,639 --> 00:42:28,030
where we can have a few more overhead in
在這裡我們可以有更多的開銷

820
00:42:28,230 --> 00:42:32,050
our data pipeline we have to go in a
我們的資料管道必須進入

821
00:42:32,250 --> 00:42:34,180
little bit deeper and we have to talk
再深入一點，我們不得不談談

822
00:42:34,380 --> 00:42:37,230
about some operator structure and
關於一些運營商的結構和

823
00:42:37,429 --> 00:42:39,760
understand what is going on inside under
瞭解下到底發生了什麼

824
00:42:39,960 --> 00:42:45,390
the hood in some operators so basically
基本上，一些操作員的引擎蓋

825
00:42:45,590 --> 00:42:48,789
the most common and expensive operators
最常見和最昂貴的運營商

826
00:42:48,989 --> 00:42:51,039
that we can use in our during the
我們可以在

827
00:42:51,239 --> 00:42:54,039
building of our of our application is
我們的應用程式的構建是

828
00:42:54,239 --> 00:42:57,940
the following and I ordered all the next
以下，我下令所有

829
00:42:58,139 --> 00:43:01,269
list of operators bar by their impact so
操作員清單受其影響吧

830
00:43:01,469 --> 00:43:03,820
from my point of view the most expensive
在我看來最貴

831
00:43:04,019 --> 00:43:06,640
operator and the most and the operator
運算元和最多運算元

832
00:43:06,840 --> 00:43:10,780
that impacts your performance and a lot
會影響您的表現

833
00:43:10,980 --> 00:43:12,880
in your during your data processing is
在您的資料處理過程中

834
00:43:13,079 --> 00:43:16,300
flat map I'm going to talk about flat
平面地圖，我將要談論平面
flat平面


835
00:43:16,500 --> 00:43:18,970
metal about flat map a little bit later
關於平面地圖的金屬稍後
Metal: 金屬
836
00:43:19,170 --> 00:43:21,670
but for now this is the most expected
但目前這是最令人期待的

837
00:43:21,869 --> 00:43:24,570
expensive operator you can use in your
您可以在您的設備中使用昂貴的運營商

838
00:43:24,769 --> 00:43:27,820
reactive pipeline the next one is
反應管道下一個是

839
00:43:28,019 --> 00:43:32,500
published on and publish on has a little
發表于和發表於有一點

840
00:43:32,699 --> 00:43:34,870
bit less overhead but basically this is
開銷少一點，但是基本上這是

841
00:43:35,070 --> 00:43:37,420
overhead related to switching between
與切換之間有關的開銷
Switching:to change between
842
00:43:37,619 --> 00:43:39,880
the streams and some additional data
流和一些其他資料

843
00:43:40,079 --> 00:43:42,789
structure use it under the hood the same
結構在引擎蓋下使用相同

844
00:43:42,989 --> 00:43:45,100
almost the same overhead you will have
您將擁有幾乎相同的開銷

845
00:43:45,300 --> 00:43:47,110
this publish operator in order to
此發佈運算子以

846
00:43:47,309 --> 00:43:49,390
multicast die data between few
多播之間的多播資料
Multicast:
Multi:很多種 
cast:撥發
847
00:43:49,590 --> 00:43:52,150
subscribers and a little bit less
訂戶和少一點

848
00:43:52,349 --> 00:43:54,250
overhead you will have this contact mate
開銷，您將擁有此連絡人

849
00:43:54,449 --> 00:43:57,100
which also has under the hood some
裡面也有一些

850
00:43:57,300 --> 00:43:59,590
additional data structure in order to
附加資料結構以便

851
00:43:59,789 --> 00:44:03,300
handle you know in order to process data
處理您知道的以便處理資料

852
00:44:03,500 --> 00:44:06,940
so let's take a look what is going on
讓我們看看發生了什麼

853
00:44:07,139 --> 00:44:09,360
under the hood for those operators and
在那些操作員的幕後

854
00:44:09,559 --> 00:44:13,240
let me quickly show what kind of
讓我快速展示一下

855
00:44:13,440 --> 00:44:16,400
overhead we have and in
我們有的開銷

856
00:44:16,599 --> 00:44:18,830
in react to streams when we when we when
當我們什麼時候對流做出反應

857
00:44:19,030 --> 00:44:22,000
it comes to using one of the mention it
它涉及到使用提及之一

858
00:44:22,199 --> 00:44:26,150
operators like flocks like a flat map
運營商喜歡羊群，如平面地圖

859
00:44:26,349 --> 00:44:30,260
like publish on and just publish
就像發佈並只是發佈

860
00:44:30,460 --> 00:44:33,470
operator so here we have a plain example
運算子，所以這裡有一個簡單的例子

861
00:44:33,670 --> 00:44:36,830
of plain data processing where we have
我們擁有的簡單資料處理

862
00:44:37,030 --> 00:44:42,740
just a flat map which flattened a stream
只是平整了溪流的平面地圖

863
00:44:42,940 --> 00:44:45,920
a range of elements which runs on them
在其上運行的一系列元素

864
00:44:46,119 --> 00:44:48,910
on a different thread
在不同的線上

865
00:44:49,110 --> 00:44:52,840
since  two streams is designed for
由於第2條流專為

866
00:44:53,039 --> 00:44:55,390
multi-threaded and design it for
多執行緒並為其設計

867
00:44:55,590 --> 00:44:59,620
handling data in the several threads or
處理多個執行緒中的資料或

868
00:44:59,820 --> 00:45:02,930
making it possible to purchase data from
可以從中購買資料

869
00:45:03,130 --> 00:45:06,320
from several source which could run on
來自幾個可以繼續運行的來源

870
00:45:06,519 --> 00:45:11,600
on several threads we one of the options
在幾個執行緒上，我們的選擇之一

871
00:45:11,800 --> 00:45:15,800
that we want to we would want to write
我們想要寫的

872
00:45:16,000 --> 00:45:19,539
is  flatten the data or flatten the
是拼合數據還是拼合

873
00:45:19,739 --> 00:45:22,460
the request to another to another
對另一個人的要求

874
00:45:22,659 --> 00:45:25,580
service or requests to another services
服務或對其他服務的請求

875
00:45:25,780 --> 00:45:28,640
and during this execution in order to
在執行過程中

876
00:45:28,840 --> 00:45:31,519
handle all this data in and in order to
處理所有這些資料並為了

877
00:45:31,719 --> 00:45:37,390
you not to not shoot into your lack by
你不要不要因為缺乏而陷入困境

878
00:45:37,590 --> 00:45:40,550
improper synchronization and so for and
同步不正確等等
Improper:不適合
Synchronization:the same way
879
00:45:40,750 --> 00:45:41,060
so on
依此類推

880
00:45:41,260 --> 00:45:43,760
rag the streams does everything for you
抹布溪流為您做一切

881
00:45:43,960 --> 00:45:46,280
and react to stream serialize all the
並作出反應以串流化所有
Serialize: to put something in order
882
00:45:46,480 --> 00:45:49,039
execution and in order to serialize your
執行並序列化您的

883
00:45:49,239 --> 00:45:53,170
execution they use cues of course and
執行他們當然會使用提示

884
00:45:53,369 --> 00:45:57,320
under the hood if we if it take a look
在引擎蓋下，如果我們看看

885
00:45:57,519 --> 00:46:00,110
at what kind of which I'm talking about
我在說什麼

886
00:46:00,309 --> 00:46:03,280
I'm going to show you some additional
我要告訴你一些額外的東西

887
00:46:03,480 --> 00:46:06,490
utility class call it kills which is
實用程式類將其殺死是
Utility:something is useful but boring
888
00:46:06,690 --> 00:46:10,039
heavily used in inside inside reactor
大量用於反應堆內部

889
00:46:10,239 --> 00:46:12,590
and I'm going to just put a breakpoint
我將要設置一個中斷點

890
00:46:12,789 --> 00:46:16,039
at the stage in order to show you how
為了向您展示如何

891
00:46:16,239 --> 00:46:19,519
many cues we can produce Julian using
我們可以使用以下方法產生朱利安的許多線索

892
00:46:19,719 --> 00:46:22,960
the plain flat map operator in that case
那種情況下的普通平面地圖運算子

893
00:46:23,159 --> 00:46:28,690
so let me just start this application
所以讓我啟動這個應用程式

894
00:46:28,889 --> 00:46:32,200
and show you how many cues we produce
並告訴您我們產生了多少線索

895
00:46:32,400 --> 00:46:37,810
during their nan this one this one but
在他們難過的這段時間

896
00:46:38,010 --> 00:46:43,690
this one okay here we go here we created
這個還可以，我們去這裡創建

897
00:46:43,889 --> 00:46:45,910
the first queue or ask it for creation
第一個佇列或要求創建

898
00:46:46,110 --> 00:46:48,160
for the first queue and that happen it
對於第一個佇列，它發生了

899
00:46:48,360 --> 00:46:51,430
at the very beginning of pipeline
在管道的開始

900
00:46:51,630 --> 00:46:54,400
assembling so once we entered the flat
組裝好之後我們進入公寓
Assembling:put something together with plan
901
00:46:54,599 --> 00:46:57,430
map we produces the first queue which is
地圖，我們產生的第一個佇列是

902
00:46:57,630 --> 00:47:01,330
required for some prefetch data
一些預取資料所需

903
00:47:01,530 --> 00:47:04,269
perfection which is designed it for
專為它而設計的完美

904
00:47:04,469 --> 00:47:06,060
better better a little bit better
更好一點更好

905
00:47:06,260 --> 00:47:09,580
performance then we are going to as you
性能，那麼我們將像您一樣

906
00:47:09,780 --> 00:47:13,330
can see a little bit later we will
稍後可以看到

907
00:47:13,530 --> 00:47:15,840
produce another queue which is use it
產生另一個正在使用的佇列

908
00:47:16,039 --> 00:47:19,390
for our internal streams in order to
為了我們的內部流

909
00:47:19,590 --> 00:47:23,260
until all the elements that we requested
直到我們要求的所有要素

910
00:47:23,460 --> 00:47:25,620
for the poor souls internal skew and
對於可憐的靈魂的內在扭曲和

911
00:47:25,820 --> 00:47:29,260
here we create another we ask for
在這裡，我們創建另一個我們要求

912
00:47:29,460 --> 00:47:33,269
another queue producer and then for at
另一個佇列生產者，然後在
Queue:a line up to wait for something
913
00:47:33,469 --> 00:47:36,010
every stage at every stage of the
每個階段的每個階段

914
00:47:36,210 --> 00:47:41,370
invocation we approximately produce from
我們大約從中產生的調用

915
00:47:41,570 --> 00:47:46,030
we produce a few let me put let me put
我們生產一些讓我放

916
00:47:46,230 --> 00:47:47,950
the breakpoint here and here in order to
在這裡和這裡的中斷點，以便

917
00:47:48,150 --> 00:47:49,690
show how many queues we produce during
顯示我們在期間產生了多少個佇列

918
00:47:49,889 --> 00:47:53,890
the run time so here we go here we ask
執行時間，所以這裡我們去這裡我們問

919
00:47:54,090 --> 00:47:57,910
for or for queue supplier here we ask
我們在這裡詢問佇列供應商

920
00:47:58,110 --> 00:48:00,100
for queue supplier again and here we ask
再次要求佇列供應商，在這裡我們問

921
00:48:00,300 --> 00:48:02,980
for the first queue at this stage which
在此階段的第一個佇列中

922
00:48:03,179 --> 00:48:06,310
is run time and again and again and
是一次又一次的運行

923
00:48:06,510 --> 00:48:08,110
again and again and again and again
一遍又一遍

924
00:48:08,309 --> 00:48:12,100
again and so forth and so on and in
再等等，依此類推

925
00:48:12,300 --> 00:48:15,100
general for every for every sub stream
一般每個子流

926
00:48:15,300 --> 00:48:18,480
we will produce a queue in some
我們將在某些地方產生一個佇列

927
00:48:18,679 --> 00:48:21,610
circumstances and this is the worst case
情況，這是最壞的情況
Circumstances:situation
928
00:48:21,809 --> 00:48:23,830
because of course reactor has some
因為反應堆當然有一些

929
00:48:24,030 --> 00:48:28,090
optimizations but in general the worst
優化，但總的來說最差

930
00:48:28,289 --> 00:48:31,420
case that we can have in in run time is
我們可以在運行時使用的情況是

931
00:48:31,619 --> 00:48:36,039
an queues for an elements from the
佇列中的元素

932
00:48:36,239 --> 00:48:39,850
upstream so for example if we have 1000
上游，例如，如果我們有1000 

933
00:48:40,050 --> 00:48:42,909
of elements approximately
大約元素

934
00:48:43,108 --> 00:48:47,289
1,000 of off cues which is a lot and as
 1,000條線索很多，而且

935
00:48:47,489 --> 00:48:50,829
you can see here we use some GCC tools
您可以在這裡看到我們使用了一些GCC工具

936
00:48:51,028 --> 00:48:53,829
used which is designed for for handling
用於處理

937
00:48:54,028 --> 00:48:56,139
data in multi-threaded environment which
多執行緒環境中的資料

938
00:48:56,338 --> 00:48:59,109
means it we will have much more overhead
意味著我們將有更多的開銷

939
00:48:59,309 --> 00:49:02,769
in terms of  volatile and vacation and
在動盪和休假方面

940
00:49:02,969 --> 00:49:05,379
so for and so on so basically you should
所以等等，基本上，你應該

941
00:49:05,579 --> 00:49:07,990
remember when you start using flat naps
記得當您開始使用午睡時

942
00:49:08,190 --> 00:49:10,480
when you start using something similar
當您開始使用類似的東西時

943
00:49:10,679 --> 00:49:13,318
like publish on you will get you will
像發佈您將獲得

944
00:49:13,518 --> 00:49:16,899
have to deal with overhead by creation
必須通過創建來處理開銷

945
00:49:17,099 --> 00:49:19,298
some additional cues during the runtime
運行時的一些其他提示

946
00:49:19,498 --> 00:49:22,030
because in order to handle data from sub
因為為了處理來自子的資料

947
00:49:22,230 --> 00:49:24,430
streams in that case you have to to
在這種情況下，您必須

948
00:49:24,630 --> 00:49:26,680
provide a cue and then drain those data
提供提示，然後耗盡那些資料

949
00:49:26,880 --> 00:49:31,990
from all available queues alright so
從所有可用的佇列中可以

950
00:49:32,190 --> 00:49:34,869
what about what about publish on so let
那發佈什麼呢？ 

951
00:49:35,068 --> 00:49:38,109
me show you that this published on we
我告訴你這個發表在我們身上

952
00:49:38,309 --> 00:49:40,930
basically have the similar the similar
基本有相似點

953
00:49:41,130 --> 00:49:43,480
situation we have the overhead with an
情況下，我們的開銷

954
00:49:43,679 --> 00:49:47,379
additional cue because in order to send
額外提示，因為為了發送

955
00:49:47,579 --> 00:49:50,740
an element onto another onto another
一個元素到另一個

956
00:49:50,940 --> 00:49:54,159
worker for example in that case we have
例如，在這種情況下，我們有

957
00:49:54,358 --> 00:49:57,129
to somehow include elements we have to
以某種方式包括我們必須

958
00:49:57,329 --> 00:49:59,379
somehow put this element into shared
以某種方式將此元素共用

959
00:49:59,579 --> 00:50:02,200
memory and give an access to another
記憶並允許訪問另一個

960
00:50:02,400 --> 00:50:05,349
thread and in order to do that we have
執行緒，為了做到這一點，我們有

961
00:50:05,548 --> 00:50:08,190
to use a queue again and in that case
再次使用佇列，在這種情況下

962
00:50:08,389 --> 00:50:11,109
publish on have something similar under
發表在有類似的東西下

963
00:50:11,309 --> 00:50:13,839
the hood so at the very beginning when
引擎蓋，所以在一開始的時候

964
00:50:14,039 --> 00:50:16,119
we store but where we are built in our
我們存儲，但我們建在哪裡

965
00:50:16,318 --> 00:50:21,460
pipeline we create the request for a
管道我們創建一個請求

966
00:50:21,659 --> 00:50:25,298
queue here yeah here we request for some
在這裡排隊，是的，我們要求一些

967
00:50:25,498 --> 00:50:28,750
cue supplier and basically for every
提示供應商，基本上每個

968
00:50:28,949 --> 00:50:31,480
publish on operator will be producing
在運營商上發佈將產生

969
00:50:31,679 --> 00:50:35,500
another another queue so let me run this
另一個佇列，讓我運行這個

970
00:50:35,699 --> 00:50:37,539
play an example again and let me show
再打個例子讓我示範

971
00:50:37,739 --> 00:50:41,169
you that here we have a request for you
您在這裡，我們有一個要求給您

972
00:50:41,369 --> 00:50:48,780
again so here we go and yeah yes yeah
再次如此，我們在這裡去，是的，是的，是的

973
00:50:48,980 --> 00:50:51,639
everything a scoring BBQ is a little bit
得分燒烤的一切都有點

974
00:50:51,838 --> 00:50:52,240
different
不同

975
00:50:52,440 --> 00:50:54,609
so here we have to put a breakpoint here
所以在這裡我們必須在這裡放置一個中斷點

976
00:50:54,809 --> 00:50:56,890
and if you are going
如果你要去

977
00:50:57,090 --> 00:51:00,340
to run this application we will see know
運行此應用程式，我們將知道

978
00:51:00,539 --> 00:51:08,200
why maybe here yeah yep here we are
為什麼可能在這裡是啊我們

979
00:51:08,400 --> 00:51:11,050
going to run it the Cameron and here we
要運行Cameron，在這裡我們

980
00:51:11,250 --> 00:51:14,920
go you just you just saw that we request
去你就看我們要求

981
00:51:15,119 --> 00:51:17,200
it for another Q so we produce it
再問一個Q，所以我們生產它

982
00:51:17,400 --> 00:51:21,789
another Q to do our GC and which which
另一個Q做我們的GC，哪個

983
00:51:21,989 --> 00:51:25,860
is which is supposed to to handle data
是應該處理資料的

984
00:51:26,059 --> 00:51:29,140
between upstream and downstream but on
在上游和下游之間，但在

985
00:51:29,340 --> 00:51:31,600
the different thread so basically here
所以基本上在這裡不同的執行緒

986
00:51:31,800 --> 00:51:34,210
we have another you produce it to you to
我們有另一個你生產給你

987
00:51:34,409 --> 00:51:36,190
our runtime which is another overhead
我們的運行時，這是另一個開銷

988
00:51:36,389 --> 00:51:39,310
that we can have in our application and
我們可以在我們的應用程式中擁有

989
00:51:39,510 --> 00:51:41,230
we should remember about such an
我們應該記住這樣一個

990
00:51:41,429 --> 00:51:44,430
overhead alright
開銷不錯

991
00:51:44,630 --> 00:51:47,260
the same situation we have for concrete
我們在具體情況上也有同樣的情況
Concrete:very strong

992
00:51:47,460 --> 00:51:49,960
map and the same situation we have for
地圖和我們遇到的相同情況

993
00:51:50,159 --> 00:51:52,420
publish so if you're going to for
發佈，所以如果您要

994
00:51:52,619 --> 00:51:56,769
example to look at flags concave map we
看旗凹面圖的例子我們

995
00:51:56,969 --> 00:51:59,140
will see the same queue supplier which
將看到相同的佇列供應商

996
00:51:59,340 --> 00:52:02,170
means it at runtime concave map will
表示它在運行時凹面貼圖將

997
00:52:02,369 --> 00:52:04,720
produce another queue which means one
產生另一個佇列，這意味著一個

998
00:52:04,920 --> 00:52:07,690
more one more or few more objects for
一個或多個或多個物件

999
00:52:07,889 --> 00:52:11,800
garbage collector even so the GC tools
垃圾收集器甚至是GC工具

1000
00:52:12,000 --> 00:52:17,440
is really optimized alright so we just
真的已經優化了，所以我們只是

1001
00:52:17,639 --> 00:52:20,920
cover it some overhead that we can have
支付一些我們可以擁有的開銷

1002
00:52:21,119 --> 00:52:23,920
by number by producing objects in terms
通過數量產生物體

1003
00:52:24,119 --> 00:52:28,210
of wrappers of reactive pipelines we
反應管道的包裝我們

1004
00:52:28,409 --> 00:52:31,050
just covered a few points related to
剛剛涵蓋了與

1005
00:52:31,250 --> 00:52:34,269
method invocation and in overheads that
方法調用和開銷

1006
00:52:34,469 --> 00:52:37,150
we can have by having this chain of
我們可以擁有這個

1007
00:52:37,349 --> 00:52:39,460
responsibility and invocation of this on
對此的責任和援引

1008
00:52:39,659 --> 00:52:41,980
subscriber next and we just ended up
訂戶接下來，我們剛結束

1009
00:52:42,179 --> 00:52:45,310
with some and some operators and can
與一些和一些運營商，可以

1010
00:52:45,510 --> 00:52:47,080
impact your performance a lot by
影響您的表現

1011
00:52:47,280 --> 00:52:49,539
producing a lot of a lot of additional
產生很多額外的

1012
00:52:49,739 --> 00:52:54,190
hughes design it for multi-threading for
休斯設計用於多執行緒
Hughes:name
1013
00:52:54,389 --> 00:52:57,850
multi-threading now we are going to take
多執行緒現在我們要採取

1014
00:52:58,050 --> 00:53:01,360
a look at how we can tune all those all
看看我們如何調整所有這些

1015
00:53:01,559 --> 00:53:06,130
those overhead can be tune it at all or
這些開銷完全可以調整，或者

1016
00:53:06,329 --> 00:53:08,950
we can't do that
我們不能那樣做

1017
00:53:09,150 --> 00:53:11,950
and what we can do without what we can
沒有我們所能做的

1018
00:53:12,150 --> 00:53:14,470
do in terms of our performance in terms
就我們的表現而言

1019
00:53:14,670 --> 00:53:16,119
of improvement improvements in our
改善我們的進步

1020
00:53:16,318 --> 00:53:18,609
performance without change in any line
性能不變

1021
00:53:18,809 --> 00:53:24,250
of the code and first of all one of the
的代碼，首先

1022
00:53:24,449 --> 00:53:28,180
sync thing things we can do for our
同步我們可以為我們做的事情

1023
00:53:28,380 --> 00:53:30,820
reactive streams is trying to improve
反應流正在努力改善

1024
00:53:31,019 --> 00:53:34,030
inlining during the runtime and one of
在運行時內聯並且其中之一

1025
00:53:34,230 --> 00:53:36,720
the option to you of course improve them
您的選擇當然可以改善他們

1026
00:53:36,920 --> 00:53:40,450
improve the performance is by using for
通過使用提高性能

1027
00:53:40,650 --> 00:53:45,369
example some some more powerful JIT
例如一些更強大的JIT 

1028
00:53:45,568 --> 00:53:48,310
compilers like growl which means better
像咆哮這樣的編譯器意味著更好

1029
00:53:48,510 --> 00:53:50,859
in line in which offers better in line
在其中提供更好的排隊

1030
00:53:51,059 --> 00:53:52,810
in which offers better escape analysis
提供更好的逃生分析

1031
00:53:53,010 --> 00:53:55,810
which possibly mean reduce in possibly
這可能意味著減少

1032
00:53:56,010 --> 00:53:58,810
means reducing the number of off created
意味著減少關閉的數量

1033
00:53:59,010 --> 00:54:01,030
objects or reducing the number of
對象或減少數量

1034
00:54:01,230 --> 00:54:03,820
rappers or something that so as you have
說唱歌手或諸如此類的東西

1035
00:54:04,019 --> 00:54:07,450
seen all reactive pipeline is just a
看到所有反應式管道只是一個

1036
00:54:07,650 --> 00:54:10,030
wrapper around some small business logic
一些小型業務邏輯的包裝器

1037
00:54:10,230 --> 00:54:14,139
so could growl escape that or not maybe
所以可能會咆哮逃脫，也許

1038
00:54:14,338 --> 00:54:18,149
we should ask only about that later and
我們以後只應該問一下

1039
00:54:18,349 --> 00:54:21,550
also one of the most excited options and
也是最令人興奮的選擇之一， 

1040
00:54:21,750 --> 00:54:24,579
most excited success story about growl
關於咆哮的最激動人心的成功故事
Growl:coding software
1041
00:54:24,778 --> 00:54:29,560
is the story from Twitter which tells us
是Twitter的故事，告訴我們

1042
00:54:29,760 --> 00:54:32,230
that we can improve the Lord and we can
我們可以改善主，我們可以

1043
00:54:32,429 --> 00:54:35,200
speed up the Scala Scala code which
加快Scala Scala代碼的速度

1044
00:54:35,400 --> 00:54:38,320
means that Scala code is basically a
意味著Scala代碼基本上是

1045
00:54:38,519 --> 00:54:40,539
functional code by basically functional
功能代碼按基本功能

1046
00:54:40,739 --> 00:54:43,000
pipelines and it could be something
管道，這可能是

1047
00:54:43,199 --> 00:54:45,129
similar to what we have in reactive
類似於我們的反應式

1048
00:54:45,329 --> 00:54:47,889
pipelines so possibly growl can improve
管道，所以可能咆哮可以改善

1049
00:54:48,088 --> 00:54:51,609
that so let's take a look I'm not going
那讓我們看看我不會

1050
00:54:51,809 --> 00:54:54,730
to run benchmarks I'm not going to teach
運行基準測試，我不打算教

1051
00:54:54,929 --> 00:54:57,190
you to run everything it at life I'm
你一生都在經營

1052
00:54:57,389 --> 00:54:59,500
just going to show you the result that I
只是向您展示我的結果

1053
00:54:59,699 --> 00:55:01,889
got during the measured measurement
在測量過程中得到

1054
00:55:02,088 --> 00:55:06,099
crawl base it grab grab a set
抓底座抓一套

1055
00:55:06,298 --> 00:55:08,829
application world versus just oracle
應用程式世界與僅Oracle 

1056
00:55:09,028 --> 00:55:11,769
open JDK base hit application and here
打開JDK基本命中應用程式，然後在這裡

1057
00:55:11,969 --> 00:55:14,740
is a result as you can see is the first
如您所見，這是第一個結果

1058
00:55:14,940 --> 00:55:19,899
line or yeah the first results is the
行或是，第一個結果是

1059
00:55:20,099 --> 00:55:21,880
results of running
運行結果

1060
00:55:22,079 --> 00:55:25,510
just plain stream the same almost the
只是普通的流幾乎相同

1061
00:55:25,710 --> 00:55:29,310
same application but using open JDK 12
相同的應用程式，但使用開放式JDK 12 

1062
00:55:29,510 --> 00:55:34,150
here at the bottom we have the same
在底部，我們有相同的

1063
00:55:34,349 --> 00:55:36,730
application absolutely identical code
應用程式絕對相同的代碼

1064
00:55:36,929 --> 00:55:40,900
base but executed using growl Community
基本但使用咆哮社區執行

1065
00:55:41,099 --> 00:55:45,730
Edition so in order to so community
版所以為了如此社區

1066
00:55:45,929 --> 00:55:49,060
different is what you can do do at the
不同的是您可以在

1067
00:55:49,260 --> 00:55:51,490
current moment what you can do just
當前時刻你能做什麼

1068
00:55:51,690 --> 00:55:57,220
right now by running by providing a few
現在通過提供一些

1069
00:55:57,420 --> 00:55:59,500
additional options to to your runtime
運行時的其他選項

1070
00:55:59,699 --> 00:56:02,950
and all you have to do in your
和你要做的所有事情

1071
00:56:03,150 --> 00:56:05,920
application you have to let me quickly
應用程式，你必須讓我快速

1072
00:56:06,119 --> 00:56:08,230
show what you can do for your
展示你可以做什麼

1073
00:56:08,429 --> 00:56:14,019
application and yeah whether I have or
應用程式，是的，無論我有沒有

1074
00:56:14,219 --> 00:56:19,390
not they have those options now I don't
他們現在有那些選擇我沒有

1075
00:56:19,590 --> 00:56:22,990
have those options but basically you
有那些選擇，但基本上你

1076
00:56:23,190 --> 00:56:25,390
have you can provide a few options to
您能否提供一些選擇

1077
00:56:25,590 --> 00:56:27,630
your own time like unlock additional
您自己的時間，例如解鎖更多

1078
00:56:27,829 --> 00:56:30,880
experimental and stuff and providing
實驗性的東西和提供

1079
00:56:31,079 --> 00:56:36,100
some additional vm option to to your to
一些額外的vm選項

1080
00:56:36,300 --> 00:56:39,420
your application like using some and
您的應用程式就像使用一些

1081
00:56:39,619 --> 00:56:42,610
additional compiler in your in your
您中的其他編譯器

1082
00:56:42,809 --> 00:56:45,160
application which is available out of
可用的應用程式

1083
00:56:45,360 --> 00:56:48,640
the box in open JDK 12 11 and 9 of
打開JDK 12 11和9的盒子

1084
00:56:48,840 --> 00:56:52,120
course and you can have this performance
當然，你可以有這樣的表現

1085
00:56:52,320 --> 00:56:55,360
improvement during your runtime of your
運行期間的改進

1086
00:56:55,559 --> 00:56:57,250
short live at streams which is about
在溪流中短暫生存

1087
00:56:57,449 --> 00:56:59,980
maybe which is as you can see it
也許就是你所看到的

1088
00:57:00,179 --> 00:57:02,230
improves the performance as improved
改善性能

1089
00:57:02,429 --> 00:57:05,680
about maybe 6 percent and you can have
大約百分之六，你可以

1090
00:57:05,880 --> 00:57:07,570
much more improvements for your long
長久以來的更多改進

1091
00:57:07,769 --> 00:57:10,150
live streams which is about 7 or 8
直播約7或8 

1092
00:57:10,349 --> 00:57:15,420
percent just for for free just by using
僅通過使用免費獲得百分比

1093
00:57:15,619 --> 00:57:18,780
Community Edition version of growl and
咆哮的社區版和

1094
00:57:18,980 --> 00:57:21,940
what is the most excited of course if
當然，最激動的是

1095
00:57:22,139 --> 00:57:25,269
you have some additional funding we can
您還有一些額外的資金，我們可以

1096
00:57:25,469 --> 00:57:28,870
use Enterprise Edition of growl which
使用的企業版
Enterprise Edition:only company can use
1097
00:57:29,070 --> 00:57:30,760
shows much better performance
顯示更好的表現

1098
00:57:30,960 --> 00:57:31,879
improvements
改善

1099
00:57:32,079 --> 00:57:36,169
at runtime for short live at streams as
在運行時短暫流在

1100
00:57:36,369 --> 00:57:38,839
well as for long live streams and here
以及長流和這裡

1101
00:57:39,039 --> 00:57:42,710
as you can see we can have about maybe
如您所見，我們大概可以

1102
00:57:42,909 --> 00:57:45,710
two times better performance compared
性能是前者的兩倍

1103
00:57:45,909 --> 00:57:48,528
until the previous version and comparing
直到以前的版本並進行比較

1104
00:57:48,728 --> 00:57:51,919
to community Duchenne just by using an
只需使用一個

1105
00:57:52,119 --> 00:57:54,739
enterprise version of Gras which has a
企業版的Gras具有

1106
00:57:54,938 --> 00:57:57,159
better escape analysis and better and
更好的逃避分析，以及更好的

1107
00:57:57,358 --> 00:58:02,269
better and better inlining may be all X
更好的內聯可能全都是X 

1108
00:58:02,469 --> 00:58:05,180
laughs can can commend something on how
笑可以讚美一些

1109
00:58:05,380 --> 00:58:08,450
we can get and why we can have all of
我們可以得到以及為什麼我們可以擁有所有

1110
00:58:08,650 --> 00:58:12,859
those improvements Alec IO with me yes
這些改進Alec IO和我在一起

1111
00:58:13,059 --> 00:58:16,489
absolutely I'm here and I can its the
絕對我在這裡，我可以

1112
00:58:16,688 --> 00:58:21,440
screen your think the rhodium project
篩選您認為的銠專案

1113
00:58:21,639 --> 00:58:25,068
it's the source of the growl compiler
這是咆哮編譯器的來源

1114
00:58:25,268 --> 00:58:29,210
like this is where it is denoted the
像這樣被稱為
Denoted:where something is noted
1115
00:58:29,409 --> 00:58:34,009
open JDK team people did alter open
開放JDK團隊的人確實改變了開放

1116
00:58:34,208 --> 00:58:37,940
behave sometimes copy the internal
有時會複製內部

1117
00:58:38,139 --> 00:58:39,499
compiler for the open source version
開源版本的編譯器

1118
00:58:39,699 --> 00:58:42,079
into the open JDK forest and then when
進入開放的JDK林，然後

1119
00:58:42,278 --> 00:58:44,059
they built open dedicate did welcome
他們建立了開放的奉獻確實歡迎

1120
00:58:44,259 --> 00:58:47,568
powder it's there right so the easiest
粉末就在那裡，所以最簡單

1121
00:58:47,768 --> 00:58:50,269
way he tried it well compiler the
他嘗試的方式很好編譯器

1122
00:58:50,469 --> 00:58:51,889
community edition is perhaps to you
社區版也許適合您

1123
00:58:52,088 --> 00:58:53,899
provide a couple of common line options
提供幾個常見的線路選項

1124
00:58:54,099 --> 00:58:57,649
as I mentioned those are the double X
正如我提到的，這些是雙X 

1125
00:58:57,849 --> 00:58:59,869
and love experimental vm options and he
並喜歡實驗性的虛擬機器選項，他

1126
00:59:00,068 --> 00:59:02,509
gave a VI compiler right and you will
賦予VI編譯器權利，您將

1127
00:59:02,708 --> 00:59:05,930
get the ground the grawl and then he did growl
使他的聲發亮

1128
00:59:06,130 --> 00:59:09,318
the Enterprise Edition is a proprietary
企業版是專有的

1129
00:59:09,518 --> 00:59:12,950
product we ship concurrently download
我們同時發貨的產品下載

1130
00:59:13,150 --> 00:59:15,680
from the portal technology network
來自門戶網站技術網路

1131
00:59:15,880 --> 00:59:17,749
it comes with performance improvements
它具有性能改進

1132
00:59:17,949 --> 00:59:22,339
and mostly is more powerful version of
大部分是更強大的版本

1133
00:59:22,539 --> 00:59:26,749
the growl compiler the most notable
的編譯器最著名
Notable:important

1134
00:59:26,949 --> 00:59:29,028
optimizations which are fuller 
最充分的優化

1135
00:59:29,228 --> 00:59:31,460
are the inlining outer edges and the
是內在的外邊緣和

1136
00:59:31,659 --> 00:59:34,579
polymorphic and lining which kind
多態和襯裡哪種
Polymorphic:something can change many shape
1137
00:59:34,778 --> 00:59:37,690
I think place quite a bit throw on the
我認為在

1138
00:59:37,889 --> 00:59:39,979
reacted code because when you showed
反應的代碼，因為當您顯示

1139
00:59:40,179 --> 00:59:40,548
those
那些

1140
00:59:40,748 --> 00:59:43,999
matter full chains but he went old time
很重要，但他過得很老

1141
00:59:44,199 --> 00:59:45,630
through the same signature
通過相同的簽名

1142
00:59:45,829 --> 00:59:48,750
the request request request but you
要求要求但你

1143
00:59:48,949 --> 00:59:50,250
actually request different things from
實際要求從

1144
00:59:50,449 --> 00:59:52,350
different orientation classes for one
一個人的方向不同

1145
00:59:52,550 --> 00:59:54,539
next when you these types of features
接下來，當您使用這些類型的功能時

1146
00:59:54,739 --> 00:59:58,019
like the ground enterprise to beauty
像地面企業一樣美麗

1147
00:59:58,219 --> 01:00:00,870
compiler and handle those pieces much
編譯器並處理這些部分

1148
01:00:01,070 --> 01:00:05,910
better but in general its if analysis
更好，但總體而言，如果分析

1149
01:00:06,110 --> 01:00:10,050
for to mention is is excellent in both
更值得一提的是

1150
01:00:10,250 --> 01:00:13,019
editions and both editions and provide
版本和兩個版本並提供

1151
01:00:13,219 --> 01:00:16,170
key performance improvements or various
關鍵性能改進或各種

1152
01:00:16,369 --> 01:00:20,760
for clothes and well the Enterprise
衣服和企業

1153
01:00:20,960 --> 01:00:23,340
Edition will be astir in the community
版將在社區中廣為人知

1154
01:00:23,539 --> 01:00:28,320
so you can obtain using that walk but
這樣您就可以使用步行

1155
01:00:28,519 --> 01:00:30,420
don't want them you want to stick to
不想讓他們堅持

1156
01:00:30,619 --> 01:00:34,920
little bit worse commander and and their
差一點的指揮官和他們

1157
01:00:35,119 --> 01:00:36,870
ride impact and you can even use the
騎乘衝擊力，您甚至可以使用

1158
01:00:37,070 --> 01:00:39,830
open source that's really every night
真正每晚的開源

1159
01:00:40,030 --> 01:00:44,640
right so in any case using the growl GT
對，所以在任何情況下都可以使用咆哮GT 

1160
01:00:44,840 --> 01:00:48,090
you can in some cases and I would like
你可以在某些情況下，我想

1161
01:00:48,289 --> 01:00:50,340
to pay your attention that in in some
在某些地方要注意

1162
01:00:50,539 --> 01:00:52,800
cases for example when you have a huge
例如，當你有一個巨大的

1163
01:00:53,000 --> 01:00:54,840
number of reaction streams within your
您內部的反應物流數量

1164
01:00:55,039 --> 01:00:58,920
application when you have alone along a
當你獨自一人

