最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

為什么對(duì) Java 性能調(diào)優(yōu)最后都像在調(diào) you?

2020-11-10 17:14 作者:圖靈社區(qū)  | 我要投稿


不知道你有沒(méi)有發(fā)現(xiàn),優(yōu)化Java,或者任何其他語(yǔ)言的代碼性能經(jīng)常被當(dāng)做是一種暗黑藝術(shù)。性能分析有種神秘感。畫(huà)面類(lèi)似是這樣的:一個(gè)「黑客」經(jīng)過(guò)多年練就的手藝,能夠快速深入了解某個(gè)系統(tǒng),并提出神奇的解決方案,10秒內(nèi)就讓計(jì)算機(jī)運(yùn)行變得飛快。

從現(xiàn)實(shí)來(lái)看,性能分析更像是經(jīng)驗(yàn)主義和心理學(xué)的一種奇妙組合。重點(diǎn)在于,一方面是直觀(guān)顯示的指標(biāo)數(shù)字,另一方面是用戶(hù)和相關(guān)開(kāi)發(fā)人員如何看待這些數(shù)字。

正是由于這種加入了主觀(guān)判斷的屬性,也導(dǎo)致開(kāi)發(fā)人員在面對(duì)性能分析時(shí),容易尋求「靈丹妙藥和心法秘籍 」。

關(guān)于 Java 性能的一些誤解

很多年了,如果用 Google 搜索“Java 性能調(diào)優(yōu)”,搜索權(quán)重最高、最熱門(mén)的文章之一是在 1997 年到 1998 年左右發(fā)表的文章。

這個(gè)頁(yè)面之所以一直在搜索結(jié)果中排在前列,是因?yàn)樗诎l(fā)布后初始排名比較高,帶來(lái)了很多訪(fǎng)問(wèn),而這些訪(fǎng)問(wèn)又反過(guò)來(lái)提升了它的排名。

但這個(gè)頁(yè)面上提供的建議已經(jīng)完全過(guò)時(shí),不再成立,很多情況下甚至對(duì)應(yīng)用程序會(huì)起到反作用。

但是因?yàn)檫@個(gè)頁(yè)面在搜索結(jié)果中的權(quán)重高,展示位置靠前,很多開(kāi)發(fā)人員都有可能受到這些過(guò)時(shí)建議的影響。

舉個(gè)例子,在很早的 Java 版本中,方法分派性能很差。作為權(quán)宜之計(jì),有些 Java 開(kāi)發(fā)人員提倡避免編寫(xiě)小方法,而建議編寫(xiě)大方法。當(dāng)然,隨著技術(shù)的發(fā)展,虛方法分派的性能已經(jīng)得到極大提升。

另外,借助 Java 虛擬機(jī),特別是自動(dòng)內(nèi)聯(lián)機(jī)制,目前大部分調(diào)用點(diǎn)已經(jīng)消除了虛方法分派。按照“把所有東西集中到一個(gè)方法中”這個(gè)建議編寫(xiě)的代碼處于很大的劣勢(shì),因?yàn)樗鼘?duì)JIT編譯器很不友好。

雖然沒(méi)有明確的數(shù)據(jù)能統(tǒng)計(jì)出,這種糟糕的建議會(huì)給應(yīng)用程序的性能帶來(lái)多少不利影響,但也清楚地說(shuō)明了,不使用量化和可驗(yàn)證的方式來(lái)優(yōu)化性能是有害的。這也反映出,對(duì)于互聯(lián)網(wǎng)上的一些“坊間傳說(shuō)”, 不可盲目輕信。?

「Java 實(shí)際上是一門(mén)藍(lán)領(lǐng)語(yǔ)言」

這句話(huà)出自 Java 之父 James Gosling 。也就是說(shuō),Java 一直是一種極其實(shí)用的語(yǔ)言。它一開(kāi)始對(duì)性能的態(tài)度是,只要環(huán)境足夠快并且能提升開(kāi)發(fā)效率,就可以犧牲原始性能。所以直到近幾年,隨著 HotSpot 之類(lèi)的 JVM 的成熟和進(jìn)步,Java 環(huán)境才開(kāi)始適合于高性能計(jì)算應(yīng)用程序。
這種實(shí)用性在 Java 平臺(tái)中以多種方式體現(xiàn)出來(lái),但最明顯的一點(diǎn)就是使用了托管子系統(tǒng)。它的理念是,開(kāi)發(fā)者不需要擔(dān)心托管環(huán)境下的某些功能細(xì)節(jié),而代價(jià)是放棄對(duì)底層的一些控制。最明顯的例子當(dāng)然是內(nèi)存管理。JVM 以可插拔垃圾收集子系統(tǒng)的形式提供自動(dòng)內(nèi)存管理,所以程序員不必手動(dòng)跟蹤內(nèi)存。?
但和大多數(shù)現(xiàn)代軟件系統(tǒng)一樣,Java/JVM 軟件棧非常復(fù)雜。實(shí)際上,因?yàn)?JVM 具有高度優(yōu)化和自適應(yīng)的特性,所以構(gòu)建在 JVM 上的生產(chǎn)系統(tǒng)有時(shí)會(huì)表現(xiàn)出非常微妙而且復(fù)雜的性能行為。?
由于這些復(fù)雜的性能行為,JVM 性能調(diào)優(yōu)實(shí)際上是技術(shù)、方法論、可測(cè)的量和工具的綜合。換句話(huà)說(shuō),性能是一門(mén)實(shí)驗(yàn)科學(xué),它通過(guò)下面這些方式實(shí)現(xiàn)預(yù)期結(jié)果:

? 定義期望的結(jié)果

? 測(cè)量現(xiàn)有系統(tǒng)

? 確定要實(shí)現(xiàn)需求所需的工作

? 開(kāi)始某個(gè)改進(jìn)操作

? 重新測(cè)試

? 確定目標(biāo)是否實(shí)現(xiàn)

確定應(yīng)該測(cè)量什么并記錄這些目標(biāo)非常重要,而它們也是確定項(xiàng)目工具和可交付成果的一部分。所以,性能分析是建立在定義和實(shí)現(xiàn)非功能性需求的基礎(chǔ)之上的。這個(gè)過(guò)程不能靠猜測(cè)和坊間傳說(shuō)完成。?

那到底有沒(méi)有什么普適性調(diào)優(yōu)的技法?

最佳性能調(diào)優(yōu)的方法

技術(shù)的問(wèn)題在于,它總是在革自己的命。隨著 JIT 和垃圾收集技術(shù)的改進(jìn),優(yōu)化應(yīng)用程序性能的路徑也越來(lái)越難以捉摸。即使 JVM 可以?xún)?yōu)化我們的代碼,并且讓對(duì)象幾乎沒(méi)什么成本,但應(yīng)用程序和用戶(hù)的需求也在持續(xù)增長(zhǎng)。

有些時(shí)候,甚至是大部分時(shí)候,“好的”編碼模式盛行:小方法會(huì)恰當(dāng)內(nèi)聯(lián),接口和類(lèi)型檢查成本變低,JIT 編譯器生成的原生代碼緊湊又高效。

但是其他時(shí)候,考慮到編譯器和 CPU 的限制,我們需要手動(dòng)調(diào)整代碼,改變抽象和架構(gòu)。有些時(shí)候,對(duì)象幾乎是沒(méi)什么成本的,都不用考慮我們會(huì)消耗內(nèi)存帶寬和垃圾收集周期。

其他時(shí)候,我們要處理 TB 甚至更大規(guī)模的數(shù)據(jù)集,這時(shí)候即使是最好的垃圾收集器和內(nèi)存子系統(tǒng),也要承受很大壓力。

實(shí)際上,解決性能問(wèn)題的答案是你要了解你的工具。

也就是說(shuō)你不但要了解 Java 語(yǔ)言是如何工作的,還要知道 JVM 類(lèi)庫(kù)、內(nèi)存、編譯器、垃圾收集器和應(yīng)用程序運(yùn)行所在的硬件是如何交互的。

所有的性能問(wèn)題都沒(méi)有單一的解決方案,而是有很多解決方案。技巧就是找到那些方案,并把最能滿(mǎn)足要求的拼湊起來(lái)。

而現(xiàn)在,你即將擁有一個(gè)應(yīng)對(duì)復(fù)雜性能的秘密武器,就是下面這本《Java性能優(yōu)化實(shí)踐:JVM調(diào)優(yōu)策略、工具與技巧》。

這是一本可以當(dāng)做字典翻的Java性能調(diào)優(yōu)策略大全。你可以學(xué)習(xí)到如何平衡應(yīng)用程序的設(shè)計(jì)和可用的資源,如何監(jiān)控和調(diào)優(yōu) JVM,如何利用比老舊的類(lèi)庫(kù)和模式更高效的最新 Java 技術(shù),如何讓 Java 運(yùn)行如飛!在這本「山羊書(shū)」里聚焦了「好的性能工程」所涉及的各個(gè)方面:

? 整個(gè)軟件生命周期內(nèi)的性能方法論

? 適用于性能的測(cè)試?yán)碚?/p>

? 度量、統(tǒng)計(jì)和工具

? 分析技能(包括系統(tǒng)和數(shù)據(jù))

? 底層的技術(shù)與機(jī)制

這不是一本代碼性能技巧手冊(cè),但全部是啟發(fā)式的代碼級(jí)優(yōu)化技術(shù)。

本書(shū)的原版在亞馬遜上也獲得了眾多 5 星好評(píng),現(xiàn)在中文版終于來(lái)跟大家見(jiàn)面了!還有 InfoQ 技術(shù)大會(huì)主編,臧秀濤、唯品會(huì)資深架構(gòu)師 ,江南白衣(肖樺)的聯(lián)袂推薦!更特別的是,你還可以提前紙書(shū)上市一個(gè)月先睹為快書(shū)中的內(nèi)容,原價(jià)164?的【紙質(zhì)書(shū)】+【電子書(shū)】12月20日前,購(gòu)買(mǎi)搶讀活動(dòng)只需要?88?元,還有免單機(jī)會(huì)!

??? ??? ??















為什么對(duì) Java 性能調(diào)優(yōu)最后都像在調(diào) you?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
察隅县| 汉阴县| 三江| 古交市| 铜梁县| 普兰店市| 崇文区| 西峡县| 如皋市| 汉寿县| 莱西市| 雅安市| 衢州市| 都兰县| 余姚市| 阳春市| 九寨沟县| 津市市| 桐柏县| 上栗县| 兴业县| 樟树市| 通辽市| 若羌县| 祥云县| 新巴尔虎左旗| 乐业县| 景洪市| 澄迈县| 连云港市| 汝南县| 黄龙县| 文成县| 曲沃县| 天台县| 托克逊县| 张家界市| 娄底市| 库尔勒市| 绥化市| 岑巩县|