摘要:缺陷舊代碼難以擴(kuò)展和維護(hù)使用更多的內(nèi)聯(lián)函數(shù),開(kāi)發(fā)成本太大。具體解釋第二點(diǎn)缺陷啟動(dòng)的時(shí)候會(huì)檢測(cè)運(yùn)行在哪個(gè)處理器上,并且更具特定的處理器生成特定的內(nèi)聯(lián)函數(shù)表,極大的運(yùn)用了硬件的能力。更快的新編譯器功能原型設(shè)計(jì)。編譯器可以獨(dú)立于。
本文思路很清晰,分兩步走。第一步,老的即時(shí)編譯的缺陷導(dǎo)致新的編譯器孕育而生。第二步,具體講解Graal編譯器的特性。
老即時(shí)編譯 流程先啟動(dòng)解釋編譯,分析出解釋多次的代碼,使用c1編譯器進(jìn)行編譯,再次分析c1編譯器編譯多次的代碼,使用c2編譯器進(jìn)行編譯。
c2編譯器是最重要的一環(huán),因?yàn)閏2編譯出高度優(yōu)化的機(jī)器碼。缺陷
1.舊代碼難以擴(kuò)展和維護(hù)
2.使用更多的JVM內(nèi)聯(lián)函數(shù),開(kāi)發(fā)成本太大。
具體解釋第二點(diǎn)缺陷
JVM啟動(dòng)的時(shí)候會(huì)檢測(cè)運(yùn)行在哪個(gè)處理器上,并且更具特定的處理器生成特定的內(nèi)聯(lián)函數(shù)表,極大的運(yùn)用了硬件的能力。這樣就導(dǎo)致對(duì)于特定的處理器需要特定的內(nèi)聯(lián)表函數(shù),就需要更多的內(nèi)聯(lián)函數(shù)。所以導(dǎo)致開(kāi)發(fā)成本和維護(hù)成本大。
新即時(shí)編譯 目標(biāo)更好的編譯Java代碼,那么出發(fā)點(diǎn)就是JIT就是將字節(jié)碼轉(zhuǎn)換為機(jī)器碼,在Java中就是從byte[]轉(zhuǎn)到另外一個(gè)byte[],那么轉(zhuǎn)換代碼可不可以用java來(lái)寫(xiě)。
優(yōu)勢(shì)工程師開(kāi)發(fā)新編譯器的進(jìn)入門(mén)檻要低得多。
編譯器的內(nèi)存安全性。
能夠利用成熟的 Java 工具進(jìn)行編譯器開(kāi)發(fā)。
更快的新編譯器功能原型設(shè)計(jì)。
編譯器可以獨(dú)立于 HotSpot。
編譯器能夠自己編譯自己,以生成更快的 JIT 編譯版本。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/73427.html
摘要:今天收到一封郵件組的郵件,是關(guān)于的,版將作為第一個(gè)的版。版特性包括挑了感興趣的看了下,包括以下通過(guò)使用并行來(lái)改進(jìn)最壞情況下的延遲。雖然式設(shè)計(jì)成避免的,但有些情況下回收器會(huì)降級(jí)成。 今天收到一封郵件組的郵件,是關(guān)于JDK 10 First Release Candidate的, JDK10 b43版將作為第一個(gè)JDK10的RC版。 b43版特性包括: 286: Local-Variabl...
摘要:的新特性說(shuō)了這么多,看都會(huì)有哪些特性來(lái)改變我們寫(xiě)代碼的方式呢局部變量類型推斷局部變量類型推斷可以說(shuō)是中最值得注意的特性,這是語(yǔ)言開(kāi)發(fā)人員為了簡(jiǎn)化應(yīng)用程序的編寫(xiě)而采取的又一步,如下圖所示。 showImg(https://segmentfault.com/img/remote/1460000015356980); Java 9才發(fā)布幾個(gè)月,很多玩意都沒(méi)整明白,現(xiàn)在Java 10又快要來(lái)了...
摘要:基于局部性原理,計(jì)算機(jī)處理器在設(shè)計(jì)時(shí)做了各種優(yōu)化,比如現(xiàn)代的多級(jí)分支預(yù)測(cè)有良好局部性的程序比局部性差的程序運(yùn)行得更快。目前計(jì)算機(jī)設(shè)計(jì)中,都是以塊頁(yè)為單位管理調(diào)度存儲(chǔ),其實(shí)就是在利用空間局部性來(lái)優(yōu)化性能。 學(xué)過(guò)計(jì)算機(jī)底層原理、了解過(guò)很多架構(gòu)設(shè)計(jì)或者是做過(guò)優(yōu)化的同學(xué),應(yīng)該很熟悉局部性原理。即便是非計(jì)算機(jī)行業(yè)的人,在做各種調(diào)優(yōu)、提效時(shí)也不得不考慮到局部性,只不過(guò)他們不常用局部性一詞。如果...
摘要:某個(gè)測(cè)試服務(wù)器試圖通過(guò)反射來(lái)修改變量的值,出現(xiàn)了時(shí)靈時(shí)不靈的現(xiàn)象。這個(gè)閾值隨時(shí)會(huì)變,只是測(cè)著玩的編譯是可以取消的,現(xiàn)在修改如下,在用反射設(shè)值后,再次執(zhí)行萬(wàn)次直接取值現(xiàn)在的執(zhí)行結(jié)果又是了。結(jié)論不要修改變量,會(huì)出問(wèn)題的關(guān)于編譯期優(yōu)化的更多知識(shí) 某個(gè)測(cè)試服務(wù)器試圖通過(guò)反射來(lái)修改static final變量的值,出現(xiàn)了時(shí)靈時(shí)不靈的現(xiàn)象。 開(kāi)發(fā)環(huán)境無(wú)法重現(xiàn)。這是怎么回事呢? 先介紹背景知識(shí) 一般...
摘要:但在密集計(jì)算方面比等靜態(tài)編譯語(yǔ)言差幾十倍甚至上百倍。一使用棧內(nèi)存在引擎和擴(kuò)展中,經(jīng)常要?jiǎng)?chuàng)建一個(gè)的變量,底層就是一個(gè)指針。代碼中創(chuàng)建的變量也進(jìn)行了優(yōu)化,直接在棧內(nèi)存上預(yù)分配。應(yīng)用層與底層在錯(cuò)誤拋出的方式全部統(tǒng)一為異常。 原文:http://rango.swoole.com/archives/440最近PHP官方終于發(fā)布了傳說(shuō)中的PHP7,雖然只是alpha版。PHP7號(hào)稱是新一代的PHP...
閱讀 3229·2021-11-23 09:51
閱讀 1039·2021-08-05 09:58
閱讀 668·2019-08-29 16:05
閱讀 979·2019-08-28 18:17
閱讀 3036·2019-08-26 14:06
閱讀 2726·2019-08-26 12:20
閱讀 2161·2019-08-26 12:18
閱讀 3069·2019-08-26 11:56