最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js性能優(yōu)化之?dāng)?shù)組模式實(shí)例詳解

 更新時(shí)間:2023年10月17日 14:18:36   作者:Winn  
這篇文章主要為大家介紹了js性能優(yōu)化之?dāng)?shù)組模式實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

實(shí)例

首先我們來看看下面這兩段代碼,兩段代碼都是在初始化一個(gè)長(zhǎng)度為1億的數(shù)組,唯一區(qū)別是在片段二中,先為最后一項(xiàng)賦值1次,大家覺得會(huì)有區(qū)別嗎?

代碼一:

const arr1 = [];
for ( let i = 0; i < 100000000; ++i ) {
  arr1[i] = 1;
}

代碼二:

const arr2 = [];
arr2[100000000 - 1] = 1;
for ( let i = 0; i < 100000000; ++i ) {
  arr2[i] = 1;
}

我們來嘗試執(zhí)行一下:

可以看到片段二比片段一要耗時(shí)多出許多,片段一的耗時(shí)是318毫秒,片段二的耗時(shí)是1343毫秒,中間僅僅因?yàn)槠味葹樽詈笠豁?xiàng)賦值了1次。

片段二之所以會(huì)多出這部分的耗時(shí),歸根結(jié)底是因?yàn)関8會(huì)以不同的形式去存儲(chǔ)js的數(shù)組。

第一種模式是快速模式,V8對(duì)應(yīng)用c語言的數(shù)組來對(duì)js的數(shù)組進(jìn)行存儲(chǔ),具備速度快,緊湊的特點(diǎn)。

第二種模式是字典模式,v8 對(duì)應(yīng)用c語言的哈希表來對(duì)js的數(shù)組進(jìn)行存儲(chǔ),特點(diǎn)是速度慢松散。

兩種模式的觸發(fā)機(jī)制

如果數(shù)組從首位到最后一位是緊湊的,中間無空洞;或者預(yù)分配給數(shù)組的大小,小于10萬,無論中間有沒有空洞,都會(huì)進(jìn)入快速模式。

但是如果預(yù)分配給數(shù)組的大小,大于等于10萬,且中間有空洞,這樣就會(huì)把數(shù)組進(jìn)入字典模式。

我們?cè)倩氐阶铋_始的例子:

例子的邏輯是,首先我們定義一個(gè)數(shù)組,再為數(shù)組的最后一位賦1,在這個(gè)時(shí)候,這個(gè)數(shù)組已經(jīng)具備了一定的長(zhǎng)度,而且這個(gè)長(zhǎng)度是大于10萬的,而且這個(gè)數(shù)組中間是有非常多的空洞,只有最后一位有數(shù)字。這就意味著在這段片段里面執(zhí)行完之后,數(shù)組就會(huì)在v8里面去進(jìn)入了字典模式,而字典模式的特點(diǎn)是松散,而且執(zhí)行相對(duì)比較慢,就會(huì)導(dǎo)致前面的一段時(shí)間耗時(shí)會(huì)多出許多,這就是底層的原因。

優(yōu)化策略:

從0開始連續(xù)的初始化數(shù)組,以避免數(shù)組進(jìn)入字典模式。

不要預(yù)分配一個(gè)超大數(shù)組 (比如長(zhǎng)度大于等于 100000)

刪除數(shù)組元素時(shí)讓數(shù)組保持緊湊,盡可能避免使用 delete。

不要訪問未初始化或已刪除的數(shù)組元素。

以上就是js性能優(yōu)化之?dāng)?shù)組模式實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于js性能優(yōu)化數(shù)組模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 實(shí)用的JS正則表達(dá)式(手機(jī)號(hào)碼/IP正則/郵編正則/電話等)

    實(shí)用的JS正則表達(dá)式(手機(jī)號(hào)碼/IP正則/郵編正則/電話等)

    實(shí)用的JS正則表達(dá)式(手機(jī)號(hào)碼/IP正則/郵編正則/電話等),經(jīng)驗(yàn)積累,感興趣的朋友可以了解下,一定會(huì)對(duì)你有幫助的
    2013-01-01
  • JS實(shí)現(xiàn)三個(gè)層重疊點(diǎn)擊互相切換的方法

    JS實(shí)現(xiàn)三個(gè)層重疊點(diǎn)擊互相切換的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)三個(gè)層重疊點(diǎn)擊互相切換的方法,涉及JavaScript動(dòng)態(tài)操作頁面定位屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-10-10
  • 詳解webpack3如何正確引用并使用jQuery庫

    詳解webpack3如何正確引用并使用jQuery庫

    本篇文章主要介紹了詳解webpack3如何正確引用并使用jQuery庫,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • js實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果

    js實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • TypeScript中使用回調(diào)函數(shù)的實(shí)現(xiàn)

    TypeScript中使用回調(diào)函數(shù)的實(shí)現(xiàn)

    本文主要介紹了TypeScript中使用回調(diào)函數(shù)的實(shí)現(xiàn),包括定義回調(diào)函數(shù)、處理錯(cuò)誤、使用匿名函數(shù)、最佳實(shí)踐以及示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-12-12
  • 微信公眾平臺(tái) 發(fā)送模板消息(Java接口開發(fā))

    微信公眾平臺(tái) 發(fā)送模板消息(Java接口開發(fā))

    這篇文章主要介紹了微信公眾平臺(tái) 發(fā)送模板消息(Java接口開發(fā)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript查看代碼運(yùn)行效率console.time()與console.timeEnd()用法

    JavaScript查看代碼運(yùn)行效率console.time()與console.timeEnd()用法

    今天小編就為大家分享一篇關(guān)于JavaScript查看代碼運(yùn)行效率console.time()與console.timeEnd()用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 用方法封裝javascript的new操作符(一)

    用方法封裝javascript的new操作符(一)

    雖然js是基于對(duì)象的,但在很多時(shí)候會(huì)使用到new這個(gè)操作符。
    2010-12-12
  • JavaScript JMap類定義與使用方法示例

    JavaScript JMap類定義與使用方法示例

    這篇文章主要介紹了JavaScript JMap類定義與使用方法,涉及javascript類的定義、內(nèi)部變量、函數(shù)的定義及使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • js實(shí)現(xiàn)小星星游戲

    js實(shí)現(xiàn)小星星游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)小星星游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論

嵊泗县| 锡林郭勒盟| 绥中县| 和林格尔县| 永兴县| 日土县| 石林| 惠东县| 广东省| 绩溪县| 军事| 陇川县| 蒙阴县| 海阳市| 瓦房店市| 濮阳县| 屯留县| 民丰县| 台山市| 安图县| 左云县| 平陆县| 当涂县| 油尖旺区| 邳州市| 宿州市| 麻阳| 苏尼特左旗| 北宁市| 宽城| 平定县| 红桥区| 晴隆县| 威海市| 习水县| 漳平市| 平阳县| 安溪县| 新和县| 武城县| 都安|