当前位置:网站首页>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 |
边栏推荐
- R语言ggplot2可视化:使用ggpubr包的ggmaplot函数可视化MA图(MA-plot)、设置label.select参数自定义在图中显示标签的基因类型(自定义显示的标签列表)
- 湖仓一体电商项目(一):项目背景和架构介绍
- odoo--qweb模板介绍(一)
- How to migrate the device data connected by RTSP of EasyCVR platform to EasyNVR?
- 基于DoS攻击能量分级的ICPS综合安全控制与通信协同设计
- 58. 最后一个单词的长度
- 【软考软件评测师】基于规则说明的测试技术上篇
- 物理服务器与虚拟机:主要区别和相似之处
- How to display an Excel table in the body of an email?
- R语言时间序列数据算术运算:使用log函数将时间序列数据的数值对数化(平方、开平方、指数化等函数类似使用)
猜你喜欢
Heshu Group: Make smart cities smarter and make real life better
Mysql索引结构
Beijing, Shanghai and Guangzhou offline events丨The most unmissable technology gatherings at the end of the year are all gathered
奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
OpenHarmony环境搭建报错: ImportError: cannot import name ‘VERSION‘ from ‘hb.__main__‘
for循环的3个表达式执行顺序
dbaplus丛书丨《MySQL DBA工作笔记》限量签名版来了!
ModelCoder状态机:对柴油机工况判断策略进行建模
外包干了七年,废了。。。
MySQL查询性能优化
随机推荐
Parallelized Quick Sort Ideas
R语言筛选时间序列数据的子集(subset time series data)、使用window函数筛选连续日期时间范围内的数据(start参数和end参数分别指定起始和结束时间)
ModelCoder状态机:对柴油机工况判断策略进行建模
域名抢注“卷”到了表情包?ENS逆势上涨的新推力
大手笔!两所“双一流”大学,获75亿元重点支持!
R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用effects包中的effect函数来计算调整后的分组均值(calculate adjusted means)
datax开启hana支持以及dolphinscheduler开启datax任务
shell的理解
湖仓一体电商项目(一):项目背景和架构介绍
for循环的3个表达式执行顺序
Mysql 批量插入事务唯一键重复处理
Hu-cang integrated e-commerce project (1): project background and structure introduction
C#实现软键盘的制作
句柄与指针的简单理解
leetcode207.课程表(判断有向图是否有环)
OpenHarmony环境搭建报错: ImportError: cannot import name ‘VERSION‘ from ‘hb.__main__‘
【Kaggle:UW-Madison GI Tract Image Segmentation】肠胃分割比赛:赛后复盘+数据再理解
企业如何成功完成云迁移?
缓存一致性
【语音识别】基于GMM-HMM的语音识别系统