天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

編寫(xiě)高效的JavaScript程序

  英文原文:Writing Fast, Memory-Efficient JavaScript

  Addy Osmani是谷歌公司Chrome團(tuán)隊(duì)中的一名程序開(kāi)發(fā)工程師。他是一位JavaScript愛(ài)好者,曾經(jīng)編寫(xiě)過(guò)一本開(kāi)放源碼方面的書(shū)籍《Learning JavaScript Design Patterns》以及《Developing Backbone Applications》。為Modernizr和jQuery社區(qū)貢獻(xiàn)了開(kāi)源項(xiàng)目,目前正在從事‘Yeoman’項(xiàng)目,旨在為開(kāi)發(fā)者提供一系列健壯的工具、程序庫(kù)和工作流,幫助他們快速構(gòu)建出漂亮、引人注目的Web應(yīng)用。本文作者將帶領(lǐng)大家探索高效編寫(xiě)代碼的測(cè)試驗(yàn)證方法。

  文章內(nèi)容如下:

  JavaScript引擎包括Google V8(Chrome,Node)都是專(zhuān)為快速執(zhí)行大型JavaScript程序而設(shè)計(jì)的。在開(kāi)發(fā)過(guò)程中,如果你在乎內(nèi)存使用率和性能情況,那么你應(yīng)該會(huì)關(guān)心在用戶的瀏覽器中JavaScript引擎背后是怎么樣的。無(wú)論是V8、SpiderMonkey (Firefox)、Carakan (Opera)、Chakra (IE) 還是其他,有了它們可以幫助你更好的優(yōu)化應(yīng)用程序。

  我們應(yīng)該時(shí)不時(shí)地詢(xún)問(wèn)自己:

  • 我還能做些什么使代碼更加有效?
  • 主流的JavaScript引擎做了哪些優(yōu)化?
  • 什么是引擎無(wú)法優(yōu)化的,我能期待利用垃圾回收進(jìn)行清潔嗎?

 

  快速的加載Web網(wǎng)頁(yè)就如同汽車(chē)一樣,需要使用特殊工具。

  當(dāng)涉及到編寫(xiě)高效的內(nèi)存和快速創(chuàng)建代碼時(shí)總會(huì)出現(xiàn)一些常見(jiàn)的弊端,在這篇文章中我們將探索高效編寫(xiě)代碼的測(cè)試驗(yàn)證方法。

  一、JavaScript如何在V8中工作?

  如果你對(duì)JS引擎沒(méi)有較深的了解,開(kāi)發(fā)一個(gè)大型Web應(yīng)用也沒(méi)啥問(wèn)題,就好比會(huì)開(kāi)車(chē)的人也只是看過(guò)引擎蓋而沒(méi)有看過(guò)車(chē)蓋內(nèi)的引擎一樣(這里將Web網(wǎng)頁(yè)比如成汽車(chē))。Chrome瀏覽器是我的優(yōu)先選擇,這里我將談下V8的核心組件:

  • 一個(gè)基本的編譯器,在代碼執(zhí)行前分析JavaScript、生成本地機(jī)器代碼而非執(zhí)行字節(jié)代碼或是簡(jiǎn)單的解釋?zhuān)摱未a之初不是高度優(yōu)化的。
  • V8用對(duì)象模型“表述”對(duì)象。JavaScript中,對(duì)象是一個(gè)關(guān)聯(lián)數(shù)組,但是V8中,對(duì)象被“表述”為隱藏類(lèi),這種隱藏類(lèi)是V8的內(nèi)部類(lèi)型,用于優(yōu)化后的查找。
  • 運(yùn)行時(shí)分析器監(jiān)視正在運(yùn)行的系統(tǒng)并優(yōu)化“hot”(活躍)函數(shù)。(比如,終結(jié)運(yùn)行已久的代碼)
  • 通過(guò)運(yùn)行時(shí)分析器把優(yōu)化編譯器重新編譯和被運(yùn)行時(shí)分析器標(biāo)識(shí)為“hot”的代碼 ,這是一種有效的編譯優(yōu)化技術(shù),(例如用被調(diào)用者的主體替換函數(shù)調(diào)用的位置)。
  • V8支持去優(yōu)化,也就是說(shuō)當(dāng)你發(fā)現(xiàn)一些假設(shè)的優(yōu)化代碼太過(guò)樂(lè)觀,優(yōu)化編譯器可以退出已生成的代碼。
  • 垃圾回收,了解它是如何工作的,如同優(yōu)化JavaScript一樣同等重要。

  二、垃圾回收

  垃圾回收是內(nèi)存管理的一種形式,它試圖通過(guò)將不再使用的對(duì)象修復(fù)從而釋放內(nèi)存占用率。垃圾回收語(yǔ)言(比如JavaScript)是指在JavaScript這種垃圾回收語(yǔ)言中,應(yīng)用程序中仍在被引用的對(duì)象不會(huì)被清除。手動(dòng)消除對(duì)象引用在大多數(shù)情況下是沒(méi)有必要的。通過(guò)簡(jiǎn)單地把變量放在需要它們的地方(理想情況下,盡可能是局部作用域,即它們被使用的函數(shù)里而不是函數(shù)外層),一切將運(yùn)作地很好。

  垃圾回收清除內(nèi)存

  在JavaScript中強(qiáng)制執(zhí)行垃圾回收是不可取的,當(dāng)然,你也不會(huì)想這么做,因?yàn)槔厥者M(jìn)程被運(yùn)行時(shí)控制著,它知道什么時(shí)候才是適合清理代碼的最好時(shí)機(jī)。

  1. “消除引用”的誤解(De-Referencing Misconceptions)

  在JavaScript中回收內(nèi)存在網(wǎng)上引發(fā)了許多爭(zhēng)論,雖然它可以被用來(lái)刪除對(duì)象(map)中的屬性(key),但有部分開(kāi)發(fā)者認(rèn)為它可以用來(lái)強(qiáng)制“消除引用”。建議盡可能避免使用delete,在下面的例子中delete o.x 的弊大于利,因?yàn)樗淖兞薿的隱藏類(lèi),使它成為通用的慢對(duì)象。

    var o = { x: 1 };           delete o.x; // true         o.x; // undefined 

it知識(shí)庫(kù)編寫(xiě)高效的JavaScript程序,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 免费精品美女久久久久久久久久 | 一二三区乱码不卡手机版 | 亚洲色图在线视频 | 人妻精品久久无码专区 | 久久国产精品久久国产精品 | 美女脱了内裤张开腿让男人桶到爽 | WWW国产亚洲精品久久麻豆 | 久久涩视频 | 四虎永久精品视频在线 | 红尘影院手机在线观看 | 国产欧美一区二区精品久久久 | 午夜阳光影院在线观看视频 | Zoofilivideo人馿交 | 看全色黄大色大片免费久黄久 | 国内精品久久影视免费 | 国产www视频 | hdsexvideos中国明星 | 欧美日韩精品久久久免费观看 | 欧美双拳极限扩张 | 99久久999久久久综合精品涩 | 国产成a人片在线观看视频99 | 成人啪啪色婷婷久色社区 | 久久最新地址获取 | 最近的中文字幕免费完整 | 羞羞答答的免费视频在线观看 | 在线日本高清日本免费 | 亚洲 欧美 另类 中文 在线 | 香蕉久久一区二区三区啪啪 | 人妖欧美一区二区三区四区 | 欧洲亚洲精品A片久久99果冻 | 日本一本道高清码v | 欧美卡1卡2卡三卡2021精品 | 大陆女人内谢69XXXORG | 久久日本精品在线热 | 亚洲欧美中文日韩视频 | 夜夜国产亚洲视频香蕉 | 7777色鬼xxxx欧美色夫 | 无人影院在线播放视频 | 欧美亚洲日本日韩在线 | 精品综合久久久久久8888 | 性按摩AAAAAAA片 |