当前位置:网站首页>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 |
边栏推荐
猜你喜欢

Decoding Redis' most overlooked high CPU and memory usage issues

Markdown 1 - 图文音视频等

腾讯称电竞人才缺口200万;华为鸿蒙3.0正式发布;乐视推行每周工作4天半?...丨黑马头条...

New:WebKitX ActiveX :::Crack

最基础01/完全背包

关于香港高防IP需要关注的几个问题

Yilian: Activating the Value Potential of Data Elements and Unleashing the Innovation Dividend of SAS SSD

Apache Log4j2漏洞

leetcode207.课程表(判断有向图是否有环)

奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
随机推荐
R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用effects包中的effect函数来计算调整后的分组均值(calculate adjusted means)
datax开启hana支持以及dolphinscheduler开启datax任务
TaskDispatcher源码解析
How to solve the problem that the page does not display the channel configuration after the EasyNVR is updated to (V5.3.0)?
These critical programs are missing or too old: ma
如何把Excel表格显示到邮件正文里?
C语言学习练习题:汉诺塔(函数与递归)
R语言筛选时间序列数据的子集(subset time series data)、使用window函数筛选连续日期时间范围内的数据(start参数和end参数分别指定起始和结束时间)
leetcode207.课程表(判断有向图是否有环)
【23考研】408代码题参考模板——顺序表
【23考研】408代码题参考模板——链表
RTSP/Onvif协议视频平台EasyNVR服务一键升级功能的使用教程
Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
odoo--qweb模板介绍(一)
如何判断自己是否适合IT行业?方法很简单
[BJDCTF2020]Cookie is so stable-1|SSTI injection
Decoding Redis' most overlooked high CPU and memory usage issues
展厅全息投影所具备的三大应用特点
R语言ggplot2可视化时间序列数据(默认时间中断部分前后自动连接起来)、创建时间分组、使用分面图(faceting)可视化时间序列数据
DOM常用方法以及项目