摘要:數(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
對(duì)象結(jié)論
這是一個(gè)尷尬的結(jié)論,谷歌vs火狐,同樣是最新版本 或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧, 以谷歌為準(zhǔn)相對(duì)來(lái)說(shuō)forof作為新的ES6遍歷方法具有可觀的效率
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
摘要:允許從任一方向來(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)...
摘要:工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識(shí)基本滿足工作需求了。...
摘要:工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺(jué)得在面試中比較合適提問(wèn),即能查看出面試者的技術(shù)功底,又能考察其知識(shí)體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識(shí)基本滿足工作需求了。...
摘要:這樣就改進(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é)真的很快就忘記了...
閱讀 1075·2021-09-13 10:29
閱讀 3415·2019-08-29 18:31
閱讀 2664·2019-08-29 11:15
閱讀 3042·2019-08-26 13:25
閱讀 1401·2019-08-26 12:00
閱讀 2380·2019-08-26 11:41
閱讀 3468·2019-08-26 10:31
閱讀 1517·2019-08-26 10:25