当前位置:网站首页>jsArray array copy method performance test 2207300040
jsArray array copy method performance test 2207300040
2022-07-30 13:22: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 |
边栏推荐
- jsArray数组复制方法性能测试2207292307
- 剑指 Offer 05. 替换空格
- R语言时间序列数据算术运算:使用log函数将时间序列数据的数值对数化(平方、开平方、指数化等函数类似使用)
- WinForm枚举容器中的控件,实现控件统一事件处理机制
- 初级永磁直线电机双动子电流镜像容错控制
- Anaconda\Scripts\pip-script.py is not present ? 解决方案
- 阿里 P7 到底是怎样的水平?
- strlen跟sizeof区别
- R语言ggstatsplot包grouped_ggwithinstats函数可视化分组小提琴图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)
- 奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
猜你喜欢

DeFi 巨头进军 NFT 领域 用户怎么看?

力扣——15. 三数之和

Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇

SyntaxError: EOL while scanning string literal

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

PyQt5快速开发与实战 8.6 设置样式

Decoding Redis' most overlooked high CPU and memory usage issues

第十四天笔记

【微信小程序】一文带你搞懂小程序的页面配置和网络数据请求

How to display an Excel table in the body of an email?
随机推荐
学习笔记——七周成为数据分析师《第一周:数据分析思维》
Anaconda\Scripts\pip-script.py is not present ? 解决方案
智能指针实现猜想
Hand tearing read-write lock performance test
手慢无!阿里亿级流量高并发系统设计核心原理全彩笔记现实开源
How to solve the problem that the page does not display the channel configuration after the EasyNVR is updated to (V5.3.0)?
Scala基础:数组(Array)、映射(Map)、元组(Tuple)、集合(List)
Parallelized Quick Sort Ideas
阿里 P7 到底是怎样的水平?
EasyNVS云管理平台功能重构:支持新增用户、修改信息等
湖仓一体电商项目(一):项目背景和架构介绍
jsArray数组复制方法性能测试2207300823
Dry Goods Sharing: Various Implementation Methods of Bean Management Factory with Great Use of Small Skills
【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测
如何把Excel表格显示到邮件正文里?
元宇宙的六大支撑技术
Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
CV-Model【2】:MobileNet v1
Using Baidu EasyDL to realize the recognition of the chef's hat of the bright kitchen