成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js--遍歷數(shù)組和對(duì)象方法及其效率--for-forof--foreach--forin

ThinkSNS / 2744人閱讀

摘要:數(shù)組優(yōu)化版優(yōu)化版谷歌版本正式版本位優(yōu)化版火狐版本優(yōu)化版結(jié)論這是一個(gè)尷尬的結(jié)論,谷歌火狐,同樣是最新版本或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧,以谷歌為準(zhǔn)相對(duì)來(lái)說(shuō)作為新的遍歷方法具有可觀的效率對(duì)象

數(shù)組
    var arr = new Array(10000000);
    var arr1 = [];
    var arr2 = [];
    var arr3 = [];
    var arr4 = [];
    var arr5 = [];
    var arr6 = [];
 
    arr.fill(1);
 
    console.time("for優(yōu)化版");
    for(var i = 0,len = arr.length;i < len;i ++){
        arr1.push(arr[i]);
    }
    console.timeEnd("for優(yōu)化版");
 
    //for
    console.time("for");
    for(var i = 0;i < arr.length;i ++){
        arr2.push(arr[i]);
    }
    console.timeEnd("for");
 
    //forEach
    console.time("forEach");
    arr.forEach(function(val){
        arr3.push(val);
    });
    console.timeEnd("forEach");
 
    //for in
    console.time("for in");
    for(var b in arr){
        arr4.push(arr[b]);
    }
    console.timeEnd("for in");
 
    //map
    console.time("map");
    arr.map(function(val){
        arr5.push(val);
    });
    console.timeEnd("map");
 
    //for of
    console.time("for of");
    for(var d of arr){
        arr6.push(arr[d]);
    }
    console.timeEnd("for of");
谷歌 版本 70.0.3538.110(正式版本) (64 位):
for優(yōu)化版: 221.882080078125ms
for     : 1106.947998046875ms
forEach : 366.0771484375ms
forin   : 3758.628173828125ms
map     : 2020.76416015625ms
forof   : 1721.920166015625ms
 火狐 版本 63.03 :
for優(yōu)化版: 9959ms
for      : 10192ms 
forEach  : 1286ms
forin    : 9261ms
map      : 1776ms
forof    : 6659ms

結(jié)論

   這是一個(gè)尷尬的結(jié)論,谷歌vs火狐,同樣是最新版本 或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧, 以谷歌為準(zhǔn)相對(duì)來(lái)說(shuō)forof作為新的ES6遍歷方法具有可觀的效率
對(duì)象
        var obj = {};
    for(var i = 0,j = 10000000;i < j;i ++){
        obj[i] = i;
    }
    console.log(obj);
    var obj1 = {};
    var obj2 = {};
    var obj3 = {};
    var obj4 = {};
    var obj5 = {};
    var obj6 = {};
    console.time("foreach");
    Object.keys(obj).forEach(function(key){
//             obj1[key] = obj[key];
    });
    console.timeEnd("foreach");
    console.time("forin");
    for(var key in obj) {
//             obj2[key] = obj[key];
    }
    console.timeEnd("forin");
    console.time("getOwnPropertyNames");
    Object.getOwnPropertyNames(obj).forEach(function(key){
//             obj3[key] = obj[key];
    });
    console.timeEnd("getOwnPropertyNames");
    console.time("Reflect");
    Reflect.ownKeys(obj).forEach(function(key){
//             obj4[key] = obj[key];
    });        
    console.timeEnd("Reflect");
    console.log("---------------------------------------------------")
    console.time("forofentry");
    for (let [key, value] of Object.entries(obj)) {
//             obj5[key] =  value;
    }
    console.timeEnd("forofentry");
    console.time("forofkey");
    for (let key of Object.keys(obj)) {
//             obj6[key] =  obj[key];
    }
    console.timeEnd("forofkey");
--------------------- 
谷歌 版本 70.0.3538.110(正式版本) (64 位):
foreach            : 3097.0302734375ms
forin              : 2746.07666015625ms
getOwnPropertyNames: 7264.22412109375ms
Reflect            : 7151.320068359375ms
       ----------------------------------
forofentry         : 16713.181884765625ms
forofkey           : 5213.873046875ms
火狐 版本 63.03 :
foreach            : 727ms
forin              : 3409ms 
getOwnPropertyNames: 775ms
Reflect            : 749ms
       ----------------------------------
forofentry         : 6950ms
forofkey           : 1274ms

結(jié)論

   這是一個(gè)尷尬的結(jié)論,谷歌vs火狐,同樣是最新版本 有點(diǎn)尷尬, 以谷歌為準(zhǔn)相對(duì)來(lái)說(shuō)forin具有可觀的效率

結(jié)論

   遍歷數(shù)組有優(yōu)化版的for循環(huán),遍歷對(duì)象用forin

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99734.html

相關(guān)文章

  • 第十一章 持有對(duì)象

    摘要:允許從任一方向來(lái)遍歷對(duì)象,并在遍歷迭代過(guò)程中進(jìn)行修改該對(duì)象,還能獲得迭代器的當(dāng)前位置。這個(gè)構(gòu)造函數(shù)是將返回了一個(gè)對(duì)象給,這也是的存儲(chǔ)實(shí)現(xiàn)原理。 一、容器產(chǎn)生的原因   1.數(shù)組的缺點(diǎn):大小一旦給定就無(wú)法更改,除非復(fù)制到一個(gè)新的數(shù)組中,開銷大;而容器類都可以自動(dòng)地調(diào)整自己的尺寸?! ?.容器功能的多樣性:容器可以實(shí)現(xiàn)各種不同要求,如按不同依據(jù)將元素進(jìn)行排序或者保證容器內(nèi)無(wú)重復(fù)元素等等。關(guān)...

    archieyang 評(píng)論0 收藏0
  • 前端面試題總結(jié)

    摘要:工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識(shí)基本滿足工作需求了。...

    wuyangnju 評(píng)論0 收藏0
  • 前端面試題總結(jié)

    摘要:工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識(shí)基本滿足工作需求了。...

    yangrd 評(píng)論0 收藏0
  • [ JS 進(jìn)階 ] 如何改進(jìn)代碼性能 (3)

    摘要:這樣就改進(jìn)了代碼的性能,看代碼將保存在局部變量中所以啊,我們?cè)陂_發(fā)中,如果在函數(shù)中會(huì)經(jīng)常用到全局變量,把它保存在局部變量中避免使用語(yǔ)句用語(yǔ)句延長(zhǎng)了作用域,查找變量同樣費(fèi)時(shí)間,這個(gè)我們一般不會(huì)用到,所以不展開了。 本來(lái)在那片編寫可維護(hù)性代碼文章后就要總結(jié)這篇代碼性能文章的,耽擱了幾天,本來(lái)也是決定每天都要更新一篇文章的,因?yàn)橐郧扒废绿鄸|西沒(méi)總結(jié),學(xué)過(guò)的東西沒(méi)去總結(jié)真的很快就忘記了...

    young.li 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<