亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    JavaScript中哪種類型的循環(huán)最快?幾種for循環(huán)對(duì)比

    JavaScript中哪種類型的循環(huán)最快?幾種for循環(huán)對(duì)比

    JavaScript 是 Web 開發(fā)領(lǐng)域的“常青樹”。無(wú)論是 JavaScript 框架(如 Node.js、React、Angular、Vue 等),還是原生 JavaScript,都擁有非常龐大的粉絲基礎(chǔ)。我們來(lái)談?wù)劕F(xiàn)代 JavaScript 吧。循環(huán)一直是大多數(shù)編程語(yǔ)言的重要組成部分,而現(xiàn)代 JavaScript 為我們提供了許多迭代或循環(huán)值的方法。

    但問(wèn)題在于,我們是否真的知道哪種循環(huán)或迭代最適合我們的需求。for 循環(huán)有很多變形,例如 for、for(倒序)、for…offorEach、for…in、for…await。本文將圍繞這些展開討論。

    了解哪一種 for 循環(huán)或迭代器適合我們的需求,防止我們犯下一些影響應(yīng)用性能的低級(jí)錯(cuò)誤。

    究竟哪一種循環(huán)更快?

    答案其實(shí)是: for(倒序)

    最讓我感到驚訝的事情是,當(dāng)我在本地計(jì)算機(jī)上進(jìn)行測(cè)試之后,我不得不接受 for(倒序)是所有 for 循環(huán)中最快的這一事實(shí)。下面我會(huì)舉個(gè)對(duì)一個(gè)包含超過(guò)一百萬(wàn)項(xiàng)元素的數(shù)組執(zhí)行一次循環(huán)遍歷的例子。

    聲明console.time() 結(jié)果的準(zhǔn)確度在很大程度上取決于我們運(yùn)行測(cè)試的系統(tǒng)配置。你可以在此處對(duì)準(zhǔn)確度作進(jìn)一步了解。

    const million = 1000000;  const arr = Array(million);  // 注:這是稀疏數(shù)組,應(yīng)該為其指定內(nèi)容,否則不同方式的循環(huán)對(duì)其的處理方式會(huì)不同: // const arr = [...Array(million)]  console.time('⏳'); for (let i = arr.length; i > 0; i--) {} // for(倒序)  :- 1.5ms for (let i = 0; i < arr.length; i++) {} // for          :- 1.6ms arr.forEach(v => v)                     // foreach      :- 2.1ms for (const v of arr) {}                 // for...of     :- 11.7ms console.timeEnd('⏳');

    造成這樣結(jié)果的原因很簡(jiǎn)單,在代碼中,正序和倒序的 for 循環(huán)幾乎花費(fèi)一樣的時(shí)間,僅僅相差了 0.1 毫秒。原因是,for(倒序)只需要計(jì)算一次起始變量 let i = arr.length,而在正序的 for 循環(huán)中,它在每次變量增加后都會(huì)檢查條件 i<arr.length。這個(gè)細(xì)微的差別不是很重要,你可以忽略它。(譯者注:在數(shù)據(jù)量小或?qū)r(shí)間不敏感的代碼上,我們大可忽略它,但是根據(jù)譯者的測(cè)試,當(dāng)數(shù)據(jù)量擴(kuò)大,例如十億,千億等的數(shù)量級(jí),差距就顯著提升,我們就需要考慮時(shí)間對(duì)應(yīng)用程序性能的影響了。)

    forEachArray 原型的一個(gè)方法,與普通的 for 循環(huán)相比,forEachfor…of 需要花費(fèi)

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)