摘要:数组优化版优化版谷歌版本正式版本位优化版火狐版本优化版结论这是一个尴尬的结论,谷歌火狐,同样是最新版本或许谷歌才是王道,火狐跳舞吧,颤抖吧,你也太慢了吧,以谷歌为准相对来说作为新的遍历方法具有可观的效率对象
数组
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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/99734.html
摘要:允许从任一方向来遍历对象,并在遍历迭代过程中进行修改该对象,还能获得迭代器的当前位置。这个构造函数是将返回了一个对象给,这也是的存储实现原理。 一、容器产生的原因 1.数组的缺点:大小一旦给定就无法更改,除非复制到一个新的数组中,开销大;而容器类都可以自动地调整自己的尺寸。 2.容器功能的多样性:容器可以实现各种不同要求,如按不同依据将元素进行排序或者保证容器内无重复元素等等。关...
摘要:这样就改进了代码的性能,看代码将保存在局部变量中所以啊,我们在开发中,如果在函数中会经常用到全局变量,把它保存在局部变量中避免使用语句用语句延长了作用域,查找变量同样费时间,这个我们一般不会用到,所以不展开了。 本来在那片编写可维护性代码文章后就要总结这篇代码性能文章的,耽搁了几天,本来也是决定每天都要更新一篇文章的,因为以前欠下太多东西没总结,学过的东西没去总结真的很快就忘记了...
阅读 1018·2021-09-13 10:29
阅读 3373·2019-08-29 18:31
阅读 2599·2019-08-29 11:15
阅读 2988·2019-08-26 13:25
阅读 1345·2019-08-26 12:00
阅读 2272·2019-08-26 11:41
阅读 3317·2019-08-26 10:31
阅读 1475·2019-08-26 10:25