当前位置:网站首页>jsArray数组复制方法性能测试2207300040
jsArray数组复制方法性能测试2207300040
2022-07-30 12:56:00 【kfepiza】
jsArray数组复制方法性能测试2207300040
试验了 concat(src) , slice(src) , […src] , Array.from(src) 四个方法
测试代码
<!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/>"));br();}; dwbr.br=function(n=1){
for(let c=0;c<n;c++)document.write("<br/>");}; 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){
let beginning = Date.now(); for(let c=0;c<MaxCount;c++){
eval(methodStr); } let t1=Date.now(); let cost = t1-beginning; let temp=[ methodStr.replaceAll("<","<") , MaxCount , cost ]; tbA2.push(temp); } for(let count of ExeCountAr){
f1(` let newArray=SrcArray.concat(); ` , count); f1(` SrcArray.slice(); ` , count); f1(` [...SrcArray]; ` , count); f1(` Array.from(SrcArray); ` , count); } simpleTableByA2(BBB,tbA2); }</script><script>{
}</script></body></html>
结果
| 方法 | 执行次数 | 用时毫秒 |
|---|---|---|
| let newArray=SrcArray.concat(); | 1000 | 0 |
| SrcArray.slice(); | 1000 | 1 |
| [...SrcArray]; | 1000 | 0 |
| Array.from(SrcArray); | 1000 | 0 |
| let newArray=SrcArray.concat(); | 10000 | 5 |
| SrcArray.slice(); | 10000 | 3 |
| [...SrcArray]; | 10000 | 2 |
| Array.from(SrcArray); | 10000 | 3 |
| let newArray=SrcArray.concat(); | 100000 | 21 |
| SrcArray.slice(); | 100000 | 18 |
| [...SrcArray]; | 100000 | 19 |
| Array.from(SrcArray); | 100000 | 19 |
| let newArray=SrcArray.concat(); | 1000000 | 187 |
| SrcArray.slice(); | 1000000 | 179 |
| [...SrcArray]; | 1000000 | 196 |
| Array.from(SrcArray); | 1000000 | 191 |
| let newArray=SrcArray.concat(); | 3000000 | 562 |
| SrcArray.slice(); | 3000000 | 536 |
| [...SrcArray]; | 3000000 | 592 |
| Array.from(SrcArray); | 3000000 | 577 |
边栏推荐
猜你喜欢
随机推荐
DeFi 巨头进军 NFT 领域 用户怎么看?
Composer安装方式
R语言ggplot2可视化:使用ggpubr包的ggmaplot函数可视化MA图(MA-plot)、设置label.select参数自定义在图中显示标签的基因类型(自定义显示的标签列表)
奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
Heshu Group: Make smart cities smarter and make real life better
How to migrate the device data connected by RTSP of EasyCVR platform to EasyNVR?
手慢无!阿里亿级流量高并发系统设计核心原理全彩笔记现实开源
for循环的3个表达式执行顺序
CMake library search function does not search LD_LIBRARY_PATH
结合实战,浅析GB/T28181(三)——实况点播
[ASP.NET Core] Dependency Injection for Option Classes
[PostgreSQL] - 存储结构及缓存shared_buffers
【软考软件评测师】基于规则说明的测试技术上篇
[Go]四、模块和包、流程控制、结构体
漫谈金丝雀部署(Canary Deployment)
[PostgreSQL] - explain SQL分析介绍
How to solve the problem that the page does not display the channel configuration after the EasyNVR is updated to (V5.3.0)?
Add the device library after Vivado installation
strlen跟sizeof区别
RTSP/Onvif协议视频平台EasyNVR服务一键升级功能的使用教程








