Stream并行流詳解

1孽江、并行與并發(fā)的區(qū)別

在說到并行的時(shí)候岗屏,相信很多人都會(huì)想到并發(fā)的概念漱办。那么并行和并發(fā)兩者一字之差,有什么區(qū)別呢暇屋?

并行:多個(gè)任務(wù)在同一時(shí)間點(diǎn)發(fā)生洞辣,并由不同的cpu進(jìn)行處理扬霜,不互相搶占資源

并行:

2.png

并發(fā):多個(gè)任務(wù)在同一時(shí)間點(diǎn)內(nèi)同時(shí)發(fā)生了著瓶,但由同一個(gè)cpu進(jìn)行處理,互相搶占資源

并發(fā):

屏幕截圖 2020-12-24 162116.png

當(dāng)在大量數(shù)據(jù)處理上,數(shù)據(jù)并行化可以大量縮短任務(wù)的執(zhí)行時(shí)間华糖,將一個(gè)數(shù)據(jù)分解成多個(gè)部分瘟裸,然后并行處理,最 后將多個(gè)結(jié)果匯總兼搏,得到最終結(jié)果。

2裳朋、并行流原理介紹

對(duì)于并行流吓著,其在底層實(shí)現(xiàn)中,是沿用了Java7提供的fork/join分解合并框架進(jìn)行實(shí)現(xiàn)暖眼。fork根據(jù)cpu核數(shù)進(jìn)行數(shù) 據(jù)分塊纺裁,join對(duì)各個(gè)fork進(jìn)行合并欺缘。實(shí)現(xiàn)過程如下所示:

1.png

3浪南、影響并行流性能主要存在5個(gè)因素

對(duì)于并行流,一定不要陷入一個(gè)誤區(qū):并行一定比串行快骡送。并行在不同的情況下它不一定是比串行快的絮记。影響并行 流性能主要存在5個(gè)因素:

1)數(shù)據(jù)大小:輸入數(shù)據(jù)的大小派敷,直接影響了并行處理的性能撰洗。因?yàn)樵诓⑿袃?nèi)部實(shí)現(xiàn)中涉及到了fork/join操作差导,它 本身就存在性能上的開銷试躏。因此只有當(dāng)數(shù)據(jù)量很大,使用并行處理才有意義设褐。

2)源數(shù)據(jù)結(jié)構(gòu):fork時(shí)會(huì)對(duì)源數(shù)據(jù)進(jìn)行分割颠蕴,數(shù)據(jù)源的特性直接影響了fork的性能泣刹。 ArrayList、數(shù)組或IntStream.range犀被,可分解性最佳椅您,因?yàn)樗麄兌贾С蛛S機(jī)讀取,因此可以被任意分割寡键。 HashSet掀泳、TreeSet,可分解性一般昌腰,其雖然可被分解,但因?yàn)槠鋬?nèi)部數(shù)據(jù)結(jié)構(gòu)遭商,很難被平均分解固灵。 LinkedList、Streams.iterate劫流、BufferedReader.lines巫玻,可分解性極差,因?yàn)樗麄冮L(zhǎng)度未知祠汇,無法確定在哪里進(jìn)行 分割仍秤。

3)裝箱拆箱 盡量使用基本數(shù)據(jù)類型,避免裝箱拆箱可很。

4)CPU核數(shù) fork的產(chǎn)生數(shù)量是與可用CPU核數(shù)相關(guān)诗力,可用的核數(shù)越多,獲取的性能提升就會(huì)越大我抠。

5)單元處理開銷 花在流中每個(gè)元素的時(shí)間越長(zhǎng)苇本,并行操作帶來的性能提升就會(huì)越明顯。

4菜拓、測(cè)試總結(jié)

1)基本類型

性能消耗: Stream串行>for循環(huán)>Stream并行

2)對(duì)象

性能消耗:Stream串行>for循環(huán)>Stream并行

3)復(fù)雜對(duì)象

性能消耗:for循環(huán)>Stream串行>Stream并行

結(jié)論:對(duì)于簡(jiǎn)單操作瓣窄,如果環(huán)境機(jī)是多核的話,建議使用Stream并行纳鼎,同時(shí)在不考慮核數(shù)的情況 下俺夕,普通for循環(huán)性能要明顯高于Stream串行,相差兩倍左右贱鄙。 對(duì)于復(fù)雜操作劝贸,推薦使用Stream API操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逗宁,一起剝皮案震驚了整個(gè)濱河市映九,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疙剑,老刑警劉巖氯迂,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異言缤,居然都是意外死亡嚼蚀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門管挟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轿曙,“玉大人,你說我怎么就攤上這事僻孝〉嫉郏” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵穿铆,是天一觀的道長(zhǎng)您单。 經(jīng)常有香客問我,道長(zhǎng)荞雏,這世上最難降的妖魔是什么虐秦? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮凤优,結(jié)果婚禮上悦陋,老公的妹妹穿的比我還像新娘。我一直安慰自己筑辨,他們只是感情好俺驶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棍辕,像睡著了一般暮现。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痢毒,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天送矩,我揣著相機(jī)與錄音,去河邊找鬼哪替。 笑死栋荸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凭舶。 我是一名探鬼主播晌块,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼帅霜!你這毒婦竟也來了匆背?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤身冀,失蹤者是張志新(化名)和其女友劉穎钝尸,沒想到半個(gè)月后括享,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡珍促,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年铃辖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猪叙。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娇斩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穴翩,到底是詐尸還是另有隱情犬第,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布芒帕,位于F島的核電站歉嗓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏副签。R本人自食惡果不足惜遥椿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淆储。 院中可真熱鬧冠场,春花似錦、人聲如沸本砰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)点额。三九已至舔株,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間还棱,已是汗流浹背载慈。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珍手,地道東北人办铡。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像琳要,于是被迫代替她去往敵國(guó)和親寡具。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容