Javascript如何執(zhí)行與v8的優(yōu)化

編譯型語言和解釋型語言碌冶?

這兩個(gè)概念其實(shí)沒有很標(biāo)準(zhǔn)的官方固定扑庞,通過查閱資料拒逮,個(gè)人認(rèn)為 編譯型 和 解釋型 更多應(yīng)該修飾的是某類編程語言使用的執(zhí)行方式或者說源碼如何被運(yùn)行的動(dòng)作。

通常認(rèn)為滩援,

  • 編譯型: 編譯型語言是代碼在運(yùn)行前編譯器將人類可以理解的語言(編程語言)轉(zhuǎn)換成機(jī)器可以理解的語言,轉(zhuǎn)換完成后租悄,下次運(yùn)行時(shí)不必再次轉(zhuǎn)換

  • 解釋型:也是人類可以理解的語言(編程語言),也需要轉(zhuǎn)換成機(jī)器可以理解的語言才能執(zhí)行泣棋,但是是在運(yùn)行時(shí)轉(zhuǎn)換的潭辈,所以執(zhí)行前需要解釋器安裝在系統(tǒng)環(huán)境澈吨;但并不是說解釋型就沒有編譯過程蒸其,比如JAVA同樣有編譯過程歌懒,只是編譯結(jié)果不是機(jī)器能直接執(zhí)行的辕坝,需要使用JVM解釋執(zhí)行(有些資料會(huì)將JAVA歸為編譯型語言= =!)药有。

那為什么說這兩個(gè)詞不應(yīng)該用于修飾某類具體語言呢?比如:

C/C++ :通常會(huì)經(jīng)過一系列 “編譯“ 過程輸出機(jī)器可執(zhí)行的機(jī)器碼检痰,但如果使用比如叫 Cling 的東西直接運(yùn)行源文件呢?

小結(jié)論:解釋和編譯都只是程序從源碼到運(yùn)行時(shí)的一種動(dòng)作锨推,跟語言本身無關(guān)

如果一門語言是可以解釋的铅歼,必然可以開發(fā)出這門語言的編譯器。反過來說换可,如果一門語言是可編譯的椎椰,我只要把它的編譯器放到解釋器里,把編譯推遲到運(yùn)行時(shí)沾鳄,這么語言就可以是解釋型的~

所以慨飘,我們不應(yīng)該糾結(jié)Javascript到底是 編譯型 還是 解釋型 語言,而應(yīng)該重點(diǎn)關(guān)注它在JS引擎中是如何執(zhí)行的译荞!~

Javascript如何執(zhí)行瓤的?

Javascript的執(zhí)行通常和JS引擎有關(guān),這里主要基于現(xiàn)代的JS引擎(在古老的瀏覽器中JS引擎中吞歼,幾乎沒有任何優(yōu)化的解釋運(yùn)行Javascript代碼)圈膏。

總的來說,JS引擎負(fù)責(zé)將JavaScript代碼編譯和執(zhí)行的整個(gè)過程篙骡,不同JS引擎實(shí)現(xiàn)有差別稽坤,但大致上也都包括以下幾個(gè)流程:

  • 編譯階段:進(jìn)行 分詞/詞法分析、解析/語法分析(生成AST)茫多、優(yōu)化天揖、代碼生成

  • 執(zhí)行階段:執(zhí)行生成的代碼今膊,并管理執(zhí)行過程中的內(nèi)存分配斑唬、垃圾回收等

需要注意的是缤谎,編譯階段其實(shí)發(fā)生在執(zhí)行階段前幾微秒(甚至更短!)的時(shí)間內(nèi)坷澡,并且兩個(gè)階段不是完全分割的频敛,比如優(yōu)化過程會(huì)發(fā)生在執(zhí)行的整個(gè)階段,劃分這兩個(gè)流程只是便于理解差油。

這種編譯后立即執(zhí)行的方式通常被稱為 JIT (Just In Time) Comipler

V8引擎以及性能優(yōu)化

TODO

參考

一個(gè)討論
https://zhuanlan.zhihu.com/p/25122691
解釋JIT如何優(yōu)化
https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/
大前端開發(fā)者需要了解的基礎(chǔ)編譯原理和語言知識(shí)
http://fullstack.blog/2017/06/24/%E5%A4%A7%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E8%80%85%E9%9C%80%E8%A6%81%E4%BA%86%E8%A7%A3%E7%9A%84%E5%9F%BA%E7%A1%80%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86%E5%92%8C%E8%AF%AD%E8%A8%80%E7%9F%A5%E8%AF%86/

V8相關(guān):
https://juejin.im/post/5959edfc5188250d83241399
https://zhuanlan.zhihu.com/p/25122691
https://segmentfault.com/a/1190000011289535
https://www.iteye.com/news/31307

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耀销,隨后出現(xiàn)的幾起案子罐柳,更是在濱河造成了極大的恐慌张吉,老刑警劉巖肮蛹,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稿辙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旧噪,警方通過查閱死者的電腦和手機(jī)舌菜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門缤骨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人精拟,你說我怎么就攤上這事蜂绎。” “怎么了践美?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兴革。 經(jīng)常有香客問我帖旨,道長(zhǎng)解阅,這世上最難降的妖魔是什么述召? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮夺刑,結(jié)果婚禮上遍愿,老公的妹妹穿的比我還像新娘。我一直安慰自己坞笙,他們只是感情好薛夜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般檬某。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上场斑,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天漏隐,我揣著相機(jī)與錄音青责,去河邊找鬼扁耐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛王暗,可吹牛的內(nèi)容都是我干的怎燥。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼之众,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了膘婶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亿驾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體参淹,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年规求,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓦戚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姥敛,死狀恐怖与帆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤嫂拴,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布雇庙,位于F島的核電站寒跳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏书释。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一叔收、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧复濒,春花似錦乒省、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽界牡。三九已至,卻和暖如春她混,著一層夾襖步出監(jiān)牢的瞬間馒过,已是汗流浹背来累。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摔竿。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粱胜,于是被迫代替她去往敵國(guó)和親褪迟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子味赃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350