摘要:數組優化版優化版谷歌版本正式版本位優化版火狐版本優化版結論這是一個尷尬的結論,谷歌火狐,同樣是最新版本或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧,以谷歌為準相對來說作為新的遍歷方法具有可觀的效率對象
數組
var arr = new Array(10000000); var arr1 = []; var arr2 = []; var arr3 = []; var arr4 = []; var arr5 = []; var arr6 = []; arr.fill(1); console.time("for優化版"); for(var i = 0,len = arr.length;i < len;i ++){ arr1.push(arr[i]); } console.timeEnd("for優化版"); //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優化版: 221.882080078125ms for : 1106.947998046875ms forEach : 366.0771484375ms forin : 3758.628173828125ms map : 2020.76416015625ms forof : 1721.920166015625ms 火狐 版本 63.03 : for優化版: 9959ms for : 10192ms forEach : 1286ms forin : 9261ms map : 1776ms forof : 6659ms
對象結論
這是一個尷尬的結論,谷歌vs火狐,同樣是最新版本 或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧, 以谷歌為準相對來說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
結論
這是一個尷尬的結論,谷歌vs火狐,同樣是最新版本 有點尷尬, 以谷歌為準相對來說forin具有可觀的效率結論
遍歷數組有優化版的for循環,遍歷對象用forin
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99734.html
摘要:允許從任一方向來遍歷對象,并在遍歷迭代過程中進行修改該對象,還能獲得迭代器的當前位置。這個構造函數是將返回了一個對象給,這也是的存儲實現原理。 一、容器產生的原因 1.數組的缺點:大小一旦給定就無法更改,除非復制到一個新的數組中,開銷大;而容器類都可以自動地調整自己的尺寸?! ?.容器功能的多樣性:容器可以實現各種不同要求,如按不同依據將元素進行排序或者保證容器內無重復元素等等。關...
摘要:這樣就改進了代碼的性能,看代碼將保存在局部變量中所以啊,我們在開發中,如果在函數中會經常用到全局變量,把它保存在局部變量中避免使用語句用語句延長了作用域,查找變量同樣費時間,這個我們一般不會用到,所以不展開了。 本來在那片編寫可維護性代碼文章后就要總結這篇代碼性能文章的,耽擱了幾天,本來也是決定每天都要更新一篇文章的,因為以前欠下太多東西沒總結,學過的東西沒去總結真的很快就忘記了...
閱讀 1047·2021-09-13 10:29
閱讀 3395·2019-08-29 18:31
閱讀 2638·2019-08-29 11:15
閱讀 3017·2019-08-26 13:25
閱讀 1376·2019-08-26 12:00
閱讀 2308·2019-08-26 11:41
閱讀 3404·2019-08-26 10:31
閱讀 1493·2019-08-26 10:25