• jsArray数组复制方法性能测试2207300823


    jsArray数组复制方法性能测试2207300823

    测试代码

    DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"/><title>title><style>
    
    body{margin:0}
    
    #BodyH{display:flex; align-items:center; justify-content:flex-start; background-image:linear-gradient(to right, red, orange, yellow, green, cyan, blue, purple);}
    
    
    
    style><script>
    if(!document.title.length)(function(){var str=document.URL; str=str.substring( str.lastIndexOf("/")+1 , str.lastIndexOf('.')); str=decodeURI(str); document.title=str;})();
    
    let isLog=true;clog=function(){if(isLog)for(let a of arguments)console.log(a);}; n09="0123456789"; lAZ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; laz="abcdefghijklmnopqrstuvwxyz"; Z62=n09+lAZ+laz; Z62o={};for(let i=0;i<Z62.length;i++)Z62o[Z62[i]]=i; const CTTT="Content-type";
    rdmN=(u)=>parseInt(Math.random()*u); rdmV=(sa)=>sa[rdmN(sa.length)]; rdmS=(l=1,sample=Z62)=>{let s='';for(let i=0;i<l;i++)s+=rdmV(sample);return s;};
    z62=z62l=(l)=>rdmS(l);		decFrZ62=(z)=>{let a=Array.from(z).reverse(); let i=0; for(let j=0;j<a.length;j++)i+=Z62o[a[j]]*Math.pow(62,j);return i;};
    z62Now=()=>{let l=Date.now(),a=[]; while(l>62){a.push(Z62[l%62]);l=parseInt(l/62);};a.push(Z62[l]);return a.reverse().join('');};
    z62Id=(l)=>{let s=z62Now(); if(l&&l>6){l-=6;s+=z62(l);}return s;};
    rdmRgb=()=>'rgb('+rdmN(256)+','+rdmN(256)+','+rdmN(256)+')'; rdmBgc=()=>"background-color:"+rdmRgb()+";";
    
    isA=(x)=>x&&x.constructor===Array,isS=(x)=>x&&x.constructor===String,isF=(x)=>x&&x.constructor===Function,isO=(x)=>x&&x.constructor===Object,isJ=(x)=>isA(x)||isO(x),isM=(x)=>x&&x.constructor===Map;
    isE=(x,tn)=>{let b=(x&&x instanceof HTMLElement); if(b&&tn)b=(x.tagName===tn.toUpperCase()); return b;}; 
    isColl=(x)=>x&&isFinite(x.length)&&x.constructor!==String;
    isEnterEvent=(ev)=>ev&&(ev.which===13&&ev.keyCode===13&&ev.key==="Enter"&&ev.code==="Enter");
    triggee=triggerElementEvent=触发元素的事件=(e,evn)=>{e=dgebi(e);e.dispatchEvent(new Event(evn)); return e;};
    z24ParseInt=(s)=>{let ar=Array.from(s); let ar1=ar.filter((v)=>isFinite(v)); return parseInt(ar1.join(''));};
    stringSeparator=(str,ss,hf)=>{if(!ss||ss.length===0)return str; let ar=str.split(ss.shift()); if(isF(hf))hf(ar); ar=ar.map((s)=>stringSeparator(s,ss.slice())); return ar;};
    //ge //dgebi
    const ge=window.dgebi=function(i,s){if(!i)return;let e=i;if(isS(i)){e=document.getElementById(i);if(!e)e=document.querySelector(i);} if(!s)return e; s=ge(s); if(isE(e)&&isE(s))e.appendChild(e.新娃=e.xw=s);else{clog("↓↓↓",e,"父或子不是Element",s,"↑↑↑");}return e;};
    dce=window.dcept=(p,tn="DIV")=>{let e=document.createElement(tn);e.idefine=(i)=>{e.id=i;return window[i]=e;};e.htm=(h)=>{if(h!==undefined)e.innerHTML=h;return e;};
    		e.ass=e.aCssText=(s)=>{if(s)e.style.cssText+=";"+s;return e;};e.cls=(c)=>{if(c!==undefined)e.className+=" "+c;return e;};
    		e.ce=(a0,c2,h2)=>{let ar; if(isS(a0))ar=a0.split("=->");else ar=a0; let t=ar[0].replace(/\s/g,''),h=ar[1],ct=ar[2],c=ar[3]; e.ceLast=dcept(e,t).htm(h).htm(h2).aCssText(ct).cls(c).cls(c2); if(isS(ar[4]))eval("const P=e,I=e.ceLast;"+ar[4]); return e.ceLast};
    		e.ca=(a0,c,h)=>{e.ce(a0,c,h);return e};
    		e.cen=function(a0, n=1, c, f)	{e.cenAr=[];let ar;if(isS(a0))ar=a0.split('\n');else ar=a0; for(let t=0;t<n;t++)for(let tn of ar){let s=e.ce(tn).cls(c); if(f)f(s,e, e.cenAr); e.cenAr.push(s)};return e;};
    		e.cbn=function(a0,n0=1,n1=1,c0,c1,f0,f1)	{let ar;if(isS(a0))ar=a0.split('\n');else ar=a0; let pt=ar.shift(); e.cen(pt,n0,c0,f0); for(let b of e.cenAr){b.cen(ar,n1,c1,f1);} return e;};
    		e.rdmBgc=function(){e.style.backgroundColor=rdmRgb();return e;};
    		dgebi(p,e);return e;};
    window.dceptq=function(p,t,q=1){let ear=Array(q); for(let n=0;n<q;q++){ear.push(dcept(p,t));} return ear;};
    dceptc=(p,t,c)=>dcept(p,t).cls(c); dcDiv=(p,c)=>dceptc(p,"div",c); dcArticle=(p,c)=>dceptc(p,"article",c); dcSection=(p,c)=>dceptc(p,"section",c);
    dcFL=(p,lh,c)=>{let f=dcept(p,"fieldset").cls(c); f.l=dcept(f,"legend").htm(lh); return f;};
    evalab=(p,code)=>dcept(p,"label").cls("evalab").cen("span=->"+code+"=->=->evalabL , span=->的结果是=->=->evalabC , span=->"+eval(code)+"=->=->evalabR");
    window.dwbr=function(a0=1){let ar=arguments,br=dwbr.br; if(Number.isFinite(a0)){br(a0);return;} for(let a of ar)document.write(a.replace(/\n/g,"
    "
    ));br();}; dwbr.br=function(n=1){for(let c=0;c<n;c++)document.write("
    "
    );}; window.simpleTableByA2=(p,a2)=>{let tb=dcept(p,"table").cen(['thead','tbody','tfoot']);tb.h=tb.tHead;let tbd=tb.b=tb.tBody=tb.tBodies[0]; tb.f=tb.tFoot; tb.Ntr=dcept(tb.h,"tr","Ntr"); let ar=a2.shift(); ar.forEach((v)=>dce(tb.Ntr,"th").htm(v)); a2.forEach((row,r)=>{let tr=dcept(tbd,"tr");row.forEach((v,c)=>{let td=dce(tr,"td").htm(v).cls("R"+r+"C"+c);});});return tb;};
    script> head><body><header id="BodyH"> <label>label><script>{let s=document.currentScript; let l=s.previousElementSibling; if(!l.innerHTML.length)l.textContent=document.title}script> header><div id="BodyB"> div><script>const BodyH=dgebi("BodyH") , BodyB=dgebi("BodyB") ; dce(document.body).idefine("BodyF"); dce(BodyB).idefine("BBB");script> <script>{ }script><style> *{box-sizing:border-box;} table{border-collapse:collapse;} thead {color:white; background:#331100; } tbody{ background:#eeeef9; } tbody>:nth-child(2n){background:#ffeedd; } th,td { border:1px solid black; } style><script>{ const SrcArray = [1,2,3,'4','5','6','七','八','九',[1,2,3],{a:"a",b:"b"},window,document,parseInt,Number,String,Array,Object,Function,document.html,document.body]; const ExeCountAr = [1000, 10000, 100000, 1000000, 3000000]; let tbA2=[['方法','执行次数','用时毫秒']]; function f1(methodStr , MaxCount, fun){ let beginning = Date.now(); for(let c=0;c<MaxCount;c++){ fun(); } let t1=Date.now(); let cost = t1-beginning; let temp=[ methodStr.replaceAll("<","<") , MaxCount , cost ]; tbA2.push(temp); } function f2(){ for(let count of ExeCountAr){ f1(` SrcArray.concat(); ` , count , function(){ SrcArray.concat(); }); f1(` let newArray=SrcArray.concat(); ` , count , function(){ let newArray=SrcArray.concat(); }); f1(` SrcArray.slice(); ` , count , function(){ SrcArray.slice(); }); f1(` let newArray=SrcArray.slice(); ` , count , function(){ let newArray=SrcArray.slice(); }); f1(` [...SrcArray]; ` , count , function(){ [...SrcArray]; }); f1(` let newArray=[...SrcArray]; ` , count , function(){ let newArray=[...SrcArray]; }); f1(` Array.from(SrcArray); ` , count , function(){ Array.from(SrcArray); }); f1(` let newArray=Array.from(SrcArray); ` , count , function(){ let newArray=Array.from(SrcArray); }); f1( ` let newArray=[]; for(let i=0; i` , count , function() { let newArray=[]; for(let i=0; i<SrcArray.length; i++){ newArray.push(SrcArray[i]); } } ); f1( ` let newArray=[]; for(let i=0; i` , count , function() { let newArray=[]; for(let a of SrcArray){ newArray.push(a); } } ); f1( ` let newArray=Array(SrcArray.length); for(let i=0; i` , count , function() { let newArray=Array(SrcArray.length); for(let i=0; i<SrcArray.length; i++){ newArray[i]=SrcArray[i]; } } ); } } f2(); simpleTableByA2(BBB,tbA2); }script><script>{ }script>body>html>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194

    chrome下的结果

    在这里插入图片描述

    方法执行次数用时毫秒
    SrcArray.concat(); 10000
    let newArray=SrcArray.concat(); 10000
    SrcArray.slice(); 10000
    let newArray=SrcArray.slice(); 10000
    [...SrcArray]; 10000
    let newArray=[...SrcArray]; 10000
    Array.from(SrcArray); 10000
    let newArray=Array.from(SrcArray); 10000
    let newArray=[]; for(let i=0; i10002
    let newArray=[]; for(let i=0; i10002
    let newArray=Array(SrcArray.length); for(let i=0; i10001
    SrcArray.concat(); 100001
    let newArray=SrcArray.concat(); 100001
    SrcArray.slice(); 100001
    let newArray=SrcArray.slice(); 100001
    [...SrcArray]; 100001
    let newArray=[...SrcArray]; 100001
    Array.from(SrcArray); 100000
    let newArray=Array.from(SrcArray); 100001
    let newArray=[]; for(let i=0; i100003
    let newArray=[]; for(let i=0; i100002
    let newArray=Array(SrcArray.length); for(let i=0; i100002
    SrcArray.concat(); 1000002
    let newArray=SrcArray.concat(); 1000002
    SrcArray.slice(); 1000002
    let newArray=SrcArray.slice(); 1000001
    [...SrcArray]; 1000003
    let newArray=[...SrcArray]; 1000003
    Array.from(SrcArray); 1000003
    let newArray=Array.from(SrcArray); 1000003
    let newArray=[]; for(let i=0; i1000008
    let newArray=[]; for(let i=0; i1000009
    let newArray=Array(SrcArray.length); for(let i=0; i1000003
    SrcArray.concat(); 100000022
    let newArray=SrcArray.concat(); 100000023
    SrcArray.slice(); 100000017
    let newArray=SrcArray.slice(); 100000018
    [...SrcArray]; 100000025
    let newArray=[...SrcArray]; 100000026
    Array.from(SrcArray); 100000030
    let newArray=Array.from(SrcArray); 100000030
    let newArray=[]; for(let i=0; i100000086
    let newArray=[]; for(let i=0; i100000091
    let newArray=Array(SrcArray.length); for(let i=0; i100000032
    SrcArray.concat(); 300000065
    let newArray=SrcArray.concat(); 300000063
    SrcArray.slice(); 300000053
    let newArray=SrcArray.slice(); 300000050
    [...SrcArray]; 300000076
    let newArray=[...SrcArray]; 300000076
    Array.from(SrcArray); 300000089
    let newArray=Array.from(SrcArray); 300000088
    let newArray=[]; for(let i=0; i3000000256
    let newArray=[]; for(let i=0; i3000000263
    let newArray=Array(SrcArray.length); for(let i=0; i300000097

    FireFox下的结果

    在这里插入图片描述

    方法执行次数用时毫秒
    SrcArray.concat(); 10002
    let newArray=SrcArray.concat(); 10000
    SrcArray.slice(); 10000
    let newArray=SrcArray.slice(); 10000
    [...SrcArray]; 10001
    let newArray=[...SrcArray]; 10001
    Array.from(SrcArray); 10002
    let newArray=Array.from(SrcArray); 10001
    let newArray=[]; for(let i=0; i10000
    let newArray=[]; for(let i=0; i10001
    let newArray=Array(SrcArray.length); for(let i=0; i10000
    SrcArray.concat(); 100003
    let newArray=SrcArray.concat(); 100001
    SrcArray.slice(); 100002
    let newArray=SrcArray.slice(); 100000
    [...SrcArray]; 100002
    let newArray=[...SrcArray]; 100003
    Array.from(SrcArray); 100003
    let newArray=Array.from(SrcArray); 100003
    let newArray=[]; for(let i=0; i100002
    let newArray=[]; for(let i=0; i100001
    let newArray=Array(SrcArray.length); for(let i=0; i100002
    SrcArray.concat(); 10000020
    let newArray=SrcArray.concat(); 10000019
    SrcArray.slice(); 1000006
    let newArray=SrcArray.slice(); 1000006
    [...SrcArray]; 10000020
    let newArray=[...SrcArray]; 10000021
    Array.from(SrcArray); 10000027
    let newArray=Array.from(SrcArray); 10000026
    let newArray=[]; for(let i=0; i10000019
    let newArray=[]; for(let i=0; i10000025
    let newArray=Array(SrcArray.length); for(let i=0; i10000017
    SrcArray.concat(); 1000000194
    let newArray=SrcArray.concat(); 1000000194
    SrcArray.slice(); 100000051
    let newArray=SrcArray.slice(); 100000049
    [...SrcArray]; 1000000203
    let newArray=[...SrcArray]; 1000000198
    Array.from(SrcArray); 1000000274
    let newArray=Array.from(SrcArray); 1000000271
    let newArray=[]; for(let i=0; i1000000188
    let newArray=[]; for(let i=0; i1000000249
    let newArray=Array(SrcArray.length); for(let i=0; i1000000166
    SrcArray.concat(); 3000000582
    let newArray=SrcArray.concat(); 3000000581
    SrcArray.slice(); 3000000151
    let newArray=SrcArray.slice(); 3000000148
    [...SrcArray]; 3000000612
    let newArray=[...SrcArray]; 3000000587
    Array.from(SrcArray); 3000000826
    let newArray=Array.from(SrcArray); 3000000819
    let newArray=[]; for(let i=0; i3000000563
    let newArray=[]; for(let i=0; i3000000747
    let newArray=Array(SrcArray.length); for(let i=0; i3000000509
  • 相关阅读:
    Python channel.recv() 方法在无数据可读时会阻塞等待数据退出循环失败解决方法
    深入理解模块化
    轻松应对80% 的工作场景?GitHub 爆赞的 Java 高并发与集合框架,面试官也拿我没辙
    1010 Radix 甲级 xp_xht123
    ArcGIS影像TIF拼接
    c++学习之优先级队列
    SAP角色描述-只能在Logon语言中修改问题解决 .
    华为云大咖说:开发者应用AI大模型的“道、法、术”
    图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
    macOS 运行xxx.command文件提示”无法执行,因为您没有正确的访问权限“解决方法
  • 原文地址:https://blog.csdn.net/kfepiza/article/details/126067676