Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
stage1 collect varients v2
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Browser:
Chrome 135
Operating system:
Linux
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
collect
3062710.5 Ops/sec
collect2
1641626.4 Ops/sec
collect3
7864205.0 Ops/sec
collect4
7853873.0 Ops/sec
collect5
7787382.0 Ops/sec
collect6
7871332.5 Ops/sec
collect7
7758733.0 Ops/sec
Script Preparation code:
var Z=()=>{},_=()=>document.createDocumentFragment(),$=(j)=>document.createTextNode(j),P=(j)=>document.createElement(j),z=(j)=>j.cloneNode(!0),I=(j,q)=>q.appendChild(j),R=(j,q)=>q.insertBefore(j,q.firstChild),U=(j,q)=>q.parentNode.insertBefore(j,q.nextSibling),W=(j,q)=>(q.parentNode.replaceChild(j,q),j),C=(j,q)=>{new MutationObserver((A,B)=>{for(let H of A)for(let F of H.removedNodes)if(F.contains(j)){q(),B.disconnect();return}}).observe(document,{childList:!0,subtree:!0})};var L=P("template"),X=document.createTreeWalker(L),M=(j)=>{return L.innerHTML=j,L.content.firstChild},T=(j,q,A)=>{let B=X,H={},F=q.length,J=0,G;B.currentNode=j;for(;J<F;J++){G=A[J];while(G--)B.nextNode();H[q[J]]=B.currentNode}return H},Y=document.createNodeIterator(L),N=(j,q,A)=>{let B=Y,H={},F=q.length,J=0,G;B.root=j;for(;J<F;J++){G=A[J];while(G--)B.nextNode();H[q[J]]=B.referenceNode}return H},O=(j,q,A)=>{let B={},H=q.length,F=0,J,G=j;for(;F<H;F++){J=A[F];while(J--)G=G.firstChild??G.nextSibling;B[q[F]]=G}return B},Z1=(j,q,A)=>{let B={},H=q.length,F=0,J,G=j;for(;F<H;F++){J=A[F];while(J--)G=G.firstChild||G.nextSibling;B[q[F]]=G}return B},Z2=(j,q,A)=>{let B={},F=0,J,G=j;for(;F<q.length;F++){J=A[F];while(J--)G=G.firstChild??G.nextSibling;B[q[F]]=G}return B},Z3=(j,q,A)=>{let B={},F=0,J,G=j;for(;F<q.length;F++){J=A[F];while(J--)G=G.firstChild||G.nextSibling;B[q[F]]=G}return B},E=(j,q,A)=>{let B={},H=q.length,F=0;for(;F<H;F++){let J=A[F],G=j;while(J--)G=G.firstChild??G.nextSibling;B[q[F]]=G}return B};var Q={},V=(j)=>{let q="__"+j.type,A=j.target;while(A){if(A[q])return A[q](j);A=A.parentNode}},w=(j)=>{Q[j]??=(document.addEventListener(j,V),!0)},S=(j)=>{Q[j]=null,document.removeEventListener(j,V)};var h=(j)=>{let q={};return new Proxy({...j,on(A,B){return(q[A]??=[]).push(B),()=>{q[A]?.splice(q[A].indexOf(B)>>>0,1)}}},{set(A,B,H){return q[B]?.forEach((F)=>F(H,A[B])),A[B]=H,!0}})}; var h=M; var collect=T; // original var collect2=N; // invalid var collect3=O; // good var collect4=E; // invalid var collect5=Z1; // || var collect6=Z2; // inline .length var collect7=Z3; // || + inline .length var view=h('<div class=d1><div class=d2><div class=d3><div class=d4><div class=d5><div class=d6><div class=d7><div class=d8><div class=d9><div class=d10><div class=d11><!--></div></div></div></div></div></div></div></div></div></div></div></div>');
Tests:
collect
collect(view,['a','b','c','d'],[1,3,5,2])
collect2
collect2(view,['a','b','c','d'],[1,3,5,2])
collect3
collect3(view,['a','b','c','d'],[1,3,5,2])
collect4
collect4(view,['a','b','c','d'],[1,3,5,2])
collect5
collect5(view,['a','b','c','d'],[1,3,5,2])
collect6
collect6(view,['a','b','c','d'],[1,3,5,2])
collect7
collect7(view,['a','b','c','d'],[1,3,5,2])