cpupro
Version:
Rethinking of CPU profile (collected in Node.js or Chromium browsers) analysis
2 lines (1 loc) • 15 kB
JavaScript
var it=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var ne=(e,t)=>{for(var s in t)it(e,s,{get:t[s],enumerable:!0})},re=(e,t,s,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of se(t))!ie.call(e,c)&&c!==s&&it(e,c,{get:()=>t[c],enumerable:!(o=ee(t,c))||o.enumerable});return e};var oe=e=>re(it({},"__esModule",{value:!0}),e);var ue={};ne(ue,{encode:()=>Ee});module.exports=oe(ue);var At=new Uint8Array([0,0,74,83,79,78,88,76]),Et=9,ut=255,bt=65535,wt=16777215,nt=268435455,gt=1073741823;var H=4294967295,dt=-127,yt=127,kt=-32767,Ut=32767,Rt=-8388607,Mt=8388607,Ct=-2147483647,Ot=2147483647,St=127,Yt=16383,Lt=2097151,G=0,rt=1<<0,v=1<<1,g=1<<2,Y=1<<3,A=1<<4,J=1<<5,Z=1<<6,O=1<<7,x=0,u=1,X=2,m=3,F=4,q=5,z=6,fe=7,L=8,P=9,D=10,V=11,B=12,ot=31,we=~ot,Q=224,ge=~Q,ft=7936,de=~ft,y=0,b=1,k=2,U=3,R=4,M=5,$=6,tt=7,ct=8,Pt=0,ht=16,Dt=32,Vt=~A,ye=v|J|Z,K=new Uint8Array(256),Bt=new Uint8Array(8).map((e,t)=>(K[1<<t]=t,1<<t)),S=new Uint8Array(256).map((e,t)=>{for(let s=0;s<8;s++)e+=t>>s&1;return e}),ke=Object.fromEntries(Object.entries({TYPE_UNDEF:rt,TYPE_TRUE:J,TYPE_FALSE:Z,TYPE_NULL:v,TYPE_NUMBER:g,TYPE_STRING:Y,TYPE_OBJECT:A,TYPE_ARRAY:O}).map(([e,t])=>[t,e])),Ue=Object.fromEntries(Object.entries({UINT_8:x,UINT_16:u,UINT_24:X,UINT_32:m,UINT_32_VAR:F,INT_8:L,INT_16:P,INT_24:D,INT_32:V,INT_32_VAR:B,FLOAT_32:q,FLOAT_64:z,DECIMAL:fe}).map(([e,t])=>[t,e]));var Ft=65536,jt=new Float32Array(1),at=new Uint32Array(16),_t=at.subarray(0,8),Gt=at.subarray(8,16);function lt(e){return jt[0]=e,jt[0]===e?q:z}function Nt(e){return e<0?e<kt?e<Rt?e<Ct?B:V:D:e<dt?P:L:e>Ut?e>Mt?e>Ot?B:V:D:e>yt?P:L}function Kt(e){return e>bt?e>wt?e>H?F:m:X:e>ut?u:x}function It(e){return Number.isInteger(e)?e<0?Nt(e):Kt(e):lt(e)}function ce(e){return Number.isInteger(e)?Nt(e):lt(e)}function vt(e,t){let s=Math.max(Math.abs(e),Math.abs(t)),o=e<0?1:0;return Math.max(32-Math.clz32(s)+o,1)}function he(e,t,s,o){switch(o){case x:t[y]+=1,t[k]+=s>127?2:1,t[R]+=s>7?1:0;break;case u:t[y]+=2,t[k]+=s>16383?3:2,t[R]+=s>1023?2:1;break;case X:t[y]+=3,t[k]+=s>2097151?4:3,t[R]+=s>131071?3:2;break;case m:t[y]+=4,t[k]+=s>268435455?5:4,t[R]+=s>16777215?4:3;break;case F:{let c=e.vlqBytesNeeded(s);t[y]+=c,t[k]+=c,t[R]+=e.vlqBytesNeeded((s-(s&7))/8);break}}}function _e(e,t,s,o){switch(s<0&&(s=-s),o){case L:{t[b]+=1,t[U]+=s>63?2:1,t[M]+=s>3?1:0;break}case P:{t[b]+=2,t[U]+=s>8191?3:2,t[M]+=s>511?2:1;break}case D:{t[b]+=3,t[U]+=s>1048575?4:3,t[M]+=s>65535?3:2;break}case V:{t[b]+=4,t[U]+=s>134217727?5:4,t[M]+=s>8388607?4:3;break}case B:{let c=2*s,i=e.vlqBytesNeeded(c);t[b]+=i,t[U]+=i,t[M]+=e.vlqBytesNeeded((c-(c&7))/8);break}}}function Xt(e,t,s){let o=Nt(s);if(_e(e,t,s,o),s>=0){let c=Kt(s);return he(e,t,s,c),1<<o|1<<c}return 1<<o|Ft}function qt(e,t,s,o){let c=s&Ft,i=c?b:y,n=c?(s>>8|s&Q)&255:s&(ot|Q),f=S[n],r=t[i]+(f>1?Math.ceil(e*(f<=2?1:f<=4?2:3)/8):0)+(o?2:0);return{encoding:n<<8|i,minBytes:r}}function mt(e,t,s,o,c,i){let n=i<=16?Math.ceil(e*i/8)+(o?2:0):1/0,{encoding:f,minBytes:r}=qt(e,t,s,o);if((f&15)===b){let _=t[U]+(o?1:0),h=t[M]+Math.ceil(e/2)+(o?1:0);n<r&&(f=i<<8|tt,r=n),_<r&&(f=U,r=_),h<r&&(f=M,r=h)}else{let _=t[k]+(o?1:0),h=t[R]+Math.ceil(e/2)+(o?1:0);n<r&&(f=i<<8|$,r=n),_<r&&(f=k,r=_),h<r&&(f=R,r=h)}return{encoding:f|c,minBytes:r}}function ae(e,t,s=!0,o=0,c=t.length){let i=c-o,n=0,f=!1,r=t[o],a=t[o];at.fill(0);for(let l=o;l<c;l++){let T=t[l];Number.isInteger(T)?n|=Xt(e,_t,T):(n|=1<<lt(T),f=!0),T<r&&(r=T),T>a&&(a=T)}if(f||i<2)return qt(i,_t,n,s);let _=t[o+1]-t[o],h=_,N=_,I=0;for(let l=o;l<c;l++){let T=t[l];if(l!==o){let j=T-t[l-1];I|=Xt(e,Gt,j),_!==j&&(_=!1),j>h&&(h=j),j<N&&(N=j)}}let{encoding:w,minBytes:p}=mt(i,_t,n,s,Pt,vt(r,a)),d=mt(i-1,Gt,I,s,ht,vt(N,h)),C=d.minBytes+e.vlqBytesNeeded(Math.abs(t[o])*2);if(C<p&&(w=d.encoding,p=C),i>2&&_!==!1){let l=e.vlqBytesNeeded(t[o])+e.vlqBytesNeeded(Math.abs(_)*2)+(s?1:0);l<p&&(w=ct,p=l)}return{encoding:w,minBytes:p}}function pt(e,t,s=!0){let{encoding:o}=ae(e,t,s);return o}function le(e,t){switch(t&15){case y:case b:case $:case tt:e.writeNumber(t,u);break;default:e.writeNumber(t,x)}}function E(e,t,s){let o=pt(e,t);s||e.writeVlq(t.length),le(e,o),Tt(e,t,o)}function Tt(e,t,s){let o=s&15,c=s&48,i=t;switch(c){case ht:{e.writeIntVar(i[0]),i=Array.from({length:t.length-1},(n,f)=>t[f+1]-t[f]);break}case Dt:{let n=i[0];for(let f=1;f<i.length;f++)i[f]<n&&(n=i[f]);e.writeIntVar(n),i=Array.from(t,f=>f-n);break}}switch(o){case k:{for(let n=0;n<i.length;n++)e.writeVlq(i[n]);break}case U:{for(let n=0;n<i.length;n++)e.writeIntVar(i[n]);break}case R:{for(let n=0;n<i.length;n+=2)e.writeNumber((i[n]>7?8:0)|i[n]&7|(i[n+1]>7?128:0)|(i[n+1]&7)<<4,x);for(let n=0;n<i.length;n++)i[n]>7&&e.writeVlq((i[n]-(i[n]&7))/8);break}case M:{for(let n=0;n<i.length;n+=2){let f=i[n],r=Math.abs(f),a=i[n+1]||0,_=Math.abs(a);e.writeNumber((r>3?8:0)|r&3|(f<0?4:0)|(_>3?128:0)|(_&3|(a<0?4:0))<<4,x)}for(let n=0;n<i.length;n++){let f=i[n]>=0?i[n]:-i[n];f>3&&e.writeVlq((f-(f&3))/4)}break}case $:{let n=s>>8,f=0,r=0;for(let a=0;a<i.length;a++)r|=i[a]<<f,f+=n,f>=16&&(e.writeNumber(r,u),f-=16,r>>=16);f>8?e.writeNumber(r,u):f>0&&e.writeNumber(r,x);break}case tt:{let n=s>>8,f=0,r=0;for(let a=0;a<i.length;a++){let _=i[a];r|=(_<0?-_<<1|1:_<<1)<<f,f+=n,f>=16&&(e.writeNumber(r,u),f-=16,r>>=16)}f>8?e.writeNumber(r,u):f>0&&e.writeNumber(r,x);break}case ct:{e.writeIntVar(i[0]),e.writeIntVar(i[1]-i[0]);break}case y:case b:{let n=o===b,f=s>>8,r=n?s&ft|f&Q:f;if(S[f]>1){let _=n?i.map(ce):i.map(It);e.writeTypeIndex(_,r);for(let h=0;h<i.length;h++)e.writeNumber(i[h],_[h])}else{let _=31-Math.clz32(r);for(let h=0;h<i.length;h++)e.writeNumber(i[h],_)}break}default:throw new Error("Unknown numeric array encoding method:",o)}}function Ne(e,t){let s=Math.min(e.length,t.length);if(s>=3){let o=0;for(;o<s&&e[o]===t[o];o++);if(o>=3)return o}return 0}function Ie(e,t,s){let o=Math.min(e.length,t.length-s);if(o>=3){let c=0;for(;c<o&&e[e.length-1-c]===t[t.length-1-c];c++);if(c>=3)return-c}return 0}function zt(e,t,s,o,c,i,n){let f="",r="";e.sort((a,_)=>t[a]<t[_]?-1:1);for(let a=0;a<e.length;a++){let _=n++,h=e[a],N=t[h],I=Ne(r,N),w=Ie(r,N,I)||N.length,p=I>0,d=w<0,C=p||d?N.slice(I,w):N;i[h]=_,s[_]=C.length<<2|p<<1|d<<0,f+=C,r=N,p&&o.push(I),d&&c.push(-w)}return f}function Qt(e,t){let s=new Uint32Array(e.length),o=[],c=[],i=new Uint32Array(e.length),n=new Uint32Array(e.length),f=new Set,r="",a=0;for(let h=0;h<t.length;h++){let N=t[h];i[N]++===2&&f.add(N)}let _=new Uint32Array(f).sort((h,N)=>i[N]-i[h]);for(let h of[[0,127],[127,16383]])if(_.length>a){let N=_.subarray(h[0],h[1]);r+=zt(N,e,s,o,c,n,a),a+=N.length;for(let I=0;I<N.length;I++)i[N[I]]=0}for(let h=0,N=0;h<i.length;h++)i[h]!==0&&(i[N++]=h);r+=zt(i.subarray(0,i.length-a),e,s,o,c,n,a);for(let h=0;h<t.length;h++)t[h]=n[t[h]];return{strings:r,stringDefs:s,stringSlicesStart:o,stringSlicesEnd:c,stringRefs:t}}var et=class{constructor(t=65536){this.stringEncoder=new TextEncoder,this.chunkSize=t>8?t:8,this.reset()}reset(){this.chunks=[],this.createChunk()}createChunk(){this.bytes=new Uint8Array(this.chunkSize),this.view=new DataView(this.bytes.buffer),this.pos=0}flushChunk(){this.chunks.push(this.bytes.subarray(0,this.pos)),this.bytes=this.view=null,this.pos=0}ensureCapacity(t){this.pos+t>this.bytes.length&&(this.flushChunk(),this.createChunk())}emit(){this.flushChunk();let t=Buffer.concat(this.chunks);return this.chunks=null,t}get written(){return this.chunks!==null?this.chunks.reduce((t,s)=>t+s.byteLength,0)+this.pos:0}writeBytes(t){let s=0;for(;s<t.byteLength;){let o=this.bytes.byteLength-this.pos,c=t.subarray(s,s+=o);this.bytes.set(c,this.pos),this.pos+=c.byteLength,s<t.byteLength&&(this.flushChunk(),this.createChunk())}}writeString(t){let s=0;for(;s<t.length;){let{read:o,written:c}=this.stringEncoder.encodeInto(s>0?t.slice(s):t,this.pos>0?this.bytes.subarray(this.pos):this.bytes);s+=o,this.pos+=c,s<t.length&&(this.flushChunk(),this.createChunk())}}writeUint8(t){this.ensureCapacity(1),this.view.setUint8(this.pos,t),this.pos+=1}writeInt8(t){this.ensureCapacity(1),this.view.setInt8(this.pos,t),this.pos+=1}writeUint16(t){this.ensureCapacity(2),this.view.setUint16(this.pos,t,!0),this.pos+=2}writeInt16(t){this.ensureCapacity(2),this.view.setInt16(this.pos,t,!0),this.pos+=2}writeUint24(t){this.ensureCapacity(3),this.view.setUint16(this.pos,t,!0),this.view.setUint8(this.pos+2,t>>16),this.pos+=3}writeInt24(t){this.ensureCapacity(3),this.view.setInt16(this.pos,t,!0),this.view.setInt8(this.pos+2,t>>16),this.pos+=3}writeUint32(t){this.ensureCapacity(4),this.view.setUint32(this.pos,t,!0),this.pos+=4}writeInt32(t){this.ensureCapacity(4),this.view.setInt32(this.pos,t,!0),this.pos+=4}writeUint64(t){this.ensureCapacity(8),this.view.setBigUint64(this.pos,BigInt(t),!0),this.pos+=8}writeFloat32(t){this.ensureCapacity(4),this.view.setFloat32(this.pos,t),this.pos+=4}writeFloat64(t){this.ensureCapacity(8),this.view.setFloat64(this.pos,t),this.pos+=8}};var Wt=new Uint8Array(32),Jt=new Uint8Array(33);for(let e=0;e<33;e++)Jt[32-e]=Math.ceil(e/7)||1;function Ht(e,t){let s=new Uint32Array(t.length),o=new Uint32Array(t.length).map((i,n)=>n),c=t.slice();for(let i=0;i<e.length;i++)s[e[i]]++;o.sort((i,n)=>s[n]-s[i]||i-n);for(let i=0;i<o.length;i++)s[o[i]]=i,t[i]=c[o[i]];for(let i=0;i<e.length;i++)e[i]=s[e[i]]}var st=class{constructor(t){this.backend=new et(t),this.objectKeys=new Map,this.objectEntryDefs=[],this.arrayLengths=[],this.arrayHeaders=new Map,this.arrayHeaderRefs=[],this.strings=new Map,this.stringRefs=[]}emit(){let t=new Uint8Array(12),s=new DataView(t.buffer);t.set(At),s.setUint16(8,Et,!0);let o=this.backend.emit();for(let h of this.objectKeys.keys())this.writeString(h);let{strings:c,stringDefs:i,stringSlicesStart:n,stringSlicesEnd:f,stringRefs:r}=Qt([...this.strings.keys()],this.stringRefs);this.backend.reset(),this.writeVlq(Buffer.byteLength(c)),this.backend.writeString(c),E(this,i),E(this,n),E(this,f),E(this,r),E(this,this.arrayLengths);let a=[...this.arrayHeaders.keys()];Ht(this.arrayHeaderRefs,a),E(this,a),E(this,this.arrayHeaderRefs),this.writeVlq(this.objectEntryDefs.length),this.writeVlq(this.objectKeys.size);for(let h of this.objectEntryDefs){let N=[0,...h.keys()],I=h.refs;Ht(I,N),E(this,N),E(this,I)}let _=this.backend.emit();return Buffer.concat([t,_,o])}writeString(t){let s=this.strings.get(t);s===void 0&&this.strings.set(t,s=this.strings.size),this.stringRefs.push(s)}writeObjectEntryKey(t,s,o){let c=this.objectKeys.get(s);c===void 0&&this.objectKeys.set(s,c=this.objectKeys.size);let i=t>=this.objectEntryDefs.length?this.objectEntryDefs[t]=Object.assign(new Map,{refs:[]}):this.objectEntryDefs[t],n=c<<8|o,f=this.objectEntryDefs[t].get(n);f===void 0&&i.set(n,f=i.size+1),i.refs.push(f)}writeObjectEntriesEnd(t){t>=this.objectEntryDefs.length?this.objectEntryDefs[t]=Object.assign(new Map,{refs:[0]}):this.objectEntryDefs[t].refs.push(0)}writeTypeIndex(t,s,o){let c=0,i=0;for(;s>0;)s&1&&(Wt[c]=i++),c++,s>>=1;let n=32-Math.clz32(i-1),f=0,r=0;for(let a=0;a<t.length;a++)r|=Wt[o?K[t[a]]:t[a]]<<f,f+=n,f>=8&&(this.backend.writeUint8(r),f-=8,r>>=8);f>0&&this.backend.writeUint8(r)}writeArrayLength(t){this.arrayLengths.push(t)}writeArrayHeader(t,s,o,c,i){let f=(c|(t&Vt)<<1|o<<5|i<<9)<<16|s,r=this.arrayHeaders.get(f);r===void 0&&this.arrayHeaders.set(f,r=this.arrayHeaders.size),this.arrayHeaderRefs.push(r)}vlqBytesNeeded(t){let s=0;for(;t>nt;)t/=268435456,s+=4;return Jt[Math.clz32(t)]+s}writeVlq(t){if(t<=St)this.backend.writeUint8(t<<1|0);else if(t<=Yt)this.backend.writeUint16(t<<2|1);else if(t<=Lt)this.backend.writeUint24(t<<3|3);else{let s=t&nt;this.backend.writeUint32((t>s?2147483648:0)+(s<<3|7)),t>s&&this.writeUintVar((t-s)/(1<<28))}}writeUintVar(t){if(t<=127)this.backend.writeUint8(t&127);else if(t<=16383)this.backend.writeUint16(t<<1&32512|128|t&127);else if(t<=2097151)this.backend.writeUint24(t<<2&8323072|32768|t<<1&32512|128|t&127);else{let s=this.vlqBytesNeeded(t);this.backend.ensureCapacity(s);for(let o=0;o<s-1;o++)this.backend.writeUint8(128|t&127),t=t>H?(t-(t&127))/128:t>>>7;this.backend.writeUint8(t&127)}}writeIntVar(t){let s=0;t<0&&(s=1,t=-t),t<=gt?t=t<<1|s:t=2*t+s,this.writeUintVar(t)}writeNumber(t,s){switch(s){case x:this.backend.writeUint8(t);break;case u:this.backend.writeUint16(t);break;case X:this.backend.writeUint24(t);break;case m:this.backend.writeUint32(t);break;case F:this.writeUintVar(t);break;case L:this.backend.writeInt8(t);break;case P:this.backend.writeInt16(t);break;case D:this.backend.writeInt24(t);break;case V:this.backend.writeInt32(t);break;case B:this.writeIntVar(t);break;case q:this.backend.writeFloat32(t);break;case z:this.backend.writeFloat64(t);break;default:throw new Error("Unknown numeric type: "+s)}}};function xt(e){return W(e)||v}function W(e){switch(typeof e){default:return G;case"boolean":return e?J:Z;case"string":return Y;case"number":return Number.isFinite(e)?g:v;case"object":return e===null?v:Array.isArray(e)?O:A}}function Zt(e,t){let s=0;for(let o=0;o<e.length;o++)e[o]===t&&s++;return s}var $t=new Map,pe=Object.freeze({hasInlinedEntries:!1,columns:$t}),Te=Object.freeze({hasInlinedEntries:!0,columns:$t});function te(e,t,s){if(!(s&A))return pe;let o=s===A,c=o?e.length:Zt(t,A);if(c>1){let i=new Map,n=!1;for(let f=0,r=0;f<e.length;f++)if(o||t[f]===A){let a=e[f];for(let _ of Object.keys(a)){let h=a[_],N=W(h);if(N===G)continue;let I=i.get(_);I===void 0&&i.set(_,I={key:_,typeBitmap:0,values:new Array(c),valueCount:0}),I.typeBitmap|=N,I.values[r]=h,I.valueCount++}r++}for(let f of i.values()){f.valueCount!==c&&(f.typeBitmap|=rt);let r=S[f.typeBitmap];if(r===1)continue;let a=32-Math.clz32(r-1),_=Math.ceil(a*c/8),h=1+1+_,N=f.valueCount*(1+!n);h>N&&(n=!0,i.delete(f.key))}if(i.size>0)return{hasInlinedEntries:n,columns:i}}return Te}var xe=Object.hasOwnProperty,Ae=new Map;function Ee(e,t={}){function s(r){let a=W(r);return a===g?It(r)<<3|K[a]:K[a]}function o(r,a=Ae){let _=0;for(let h in r)if(xe.call(r,h)&&!a.has(h)){let N=r[h],I=s(N);if(I===G)continue;n.writeObjectEntryKey(_,h,I),i(I,r[h]),_++}n.writeObjectEntriesEnd(_)}function c(r,a=!1,_=0){if(r.length===0){n.writeArrayLength(0);return}let h=null,N=0,I=null;if(_===0)for(let l=0;l<r.length;l++)_|=xt(r[l]);S[_]>1&&(h=r.map(xt)),_&g&&(I=_===g?r:r.filter((l,T)=>h[T]===g),N=pt(n,I,!1));let{hasInlinedEntries:w,columns:p}=te(r,h,_),d=p.size!==0,C=0;if(a||n.writeArrayLength(r.length),n.writeArrayHeader(_,N,d,w,C),S[_]>1&&n.writeTypeIndex(h,_,!0),_&Y)for(let l=0;l<r.length;l++)(h===null||h[l]===Y)&&n.writeString(r[l]);if(_&g&&Tt(n,I,N),C){let l=_===O?r:r.filter(Array.isArray);E(n,l.map(T=>T.length),!0),c(l.flat())}else if(_&O)for(let l=0;l<r.length;l++)(h===null||h[l]===O)&&c(r[l]);if(d){n.writeVlq(p.size);for(let l of p.keys())n.writeString(l);for(let l of p.values())c(l.values,!0,l.typeBitmap)}if(w)for(let l=0;l<r.length;l++)(h===null||h[l]===A)&&o(r[l],p)}function i(r,a){switch(Bt[r&7]){case Y:n.writeString(a);break;case g:n.writeNumber(a,r>>3);break;case A:o(a);break;case O:c(a);break}}let n=new st(t.chunkSize),f=s(e);return n.writeNumber(f,x),i(f,e),n.emit()}