ostia 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunk-pesqame2.js +8 -0
- package/chunk-ym89ds9x.js +21 -0
- package/cli.js +33 -38
- package/index.d.ts +5 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/runner.ts +5 -5
- package/chunk-9dqf5cxf.js +0 -8
- package/chunk-h6579788.js +0 -21
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var De={ns:1,us:1000,ms:1e6,s:1e9};async function E(r){let a=r.timeSource!==void 0,u=Bun.nanoseconds(),m=Bun.spawn(r.argv,{cwd:r.cwd,env:r.env,stdout:a?"pipe":"ignore",stderr:a?"pipe":"ignore",stdin:"ignore"}),x=a?Promise.all([new Response(m.stdout).text(),new Response(m.stderr).text()]):void 0,M=await m.exited,I=Bun.nanoseconds(),N=m.resourceUsage?.(),B={wallNs:I-u,exitCode:M,userNs:N?Number(N.cpuTime.user)*1000:void 0,systemNs:N?Number(N.cpuTime.system)*1000:void 0,maxRssBytes:N?.maxRSS};if(x&&r.timeSource){let[U,ne]=await x;B.reportedNs=_e(r.timeSource,U,ne,r.argv)}return B}function _e(r,a,u,m=[]){let x=typeof r.pattern==="string"?new RegExp(r.pattern):r.pattern,M=r.group??1,I=x.exec(a)??x.exec(u),N=m.length>0?` for "${m.join(" ")}"`:"";if(!I)throw Error(`timeSource pattern ${x} did not match the output${N}. Output was:
|
|
3
|
+
${$e(a,u)}`);let B=I[M];if(B===void 0)throw Error(`timeSource pattern ${x} matched${N} but has no capture group ${M} (matched text: "${I[0]}").`);let U=Number(B);if(!Number.isFinite(U))throw Error(`timeSource pattern ${x} group ${M} captured "${B}"${N}, which is not a number.`);return U*De[r.unit??"ms"]}function $e(r,a){let m=(M)=>M.length>800?`${M.slice(0,800)}\u2026(${M.length-800} more)`:M,x=[];if(r.trim())x.push(`--- stdout ---
|
|
4
|
+
${m(r.trimEnd())}`);if(a.trim())x.push(`--- stderr ---
|
|
5
|
+
${m(a.trimEnd())}`);return x.length>0?x.join(`
|
|
6
|
+
`):"(empty)"}async function v(r,a,u){if(typeof r==="function"){await r(a);return}let m=ke(r),M=await Bun.spawn(m,{cwd:u.cwd,env:u.env,stdout:"ignore",stderr:"inherit",stdin:"ignore"}).exited;if(M!==0)throw Error(`prepare command "${m.join(" ")}" exited with code ${M} before ${a.phase} trial ${a.index}.`)}function ke(r){if(r===void 0||typeof r==="function")return;return Array.isArray(r)?r:f(r)}function Me(r){if(r===void 0)return;return{pattern:typeof r.pattern==="string"?r.pattern:r.pattern.source,...r.group!==void 0&&{group:r.group},...r.unit!==void 0&&{unit:r.unit}}}function f(r){return r.trim().split(/\s+/).filter(Boolean)}function T(r){return JSON.stringify(ge(r))}function ge(r){if(Array.isArray(r))return r.map(ge);if(r!==null&&typeof r==="object"){let a={};for(let u of Object.keys(r).sort())a[u]=ge(r[u]);return a}return r}function e(r,...a){let u=Bun.CryptoHasher.hash("sha256",T(a),"hex");return`${r}_${u.slice(0,16)}`}var be,Se=!1;function Te(r){let a=Bun.spawnSync(["git",...r],{timeout:200,stdout:"pipe",stderr:"ignore"});return a.success?a.stdout.toString().trim():void 0}function ve(){if(Se)return be;Se=!0;try{let r=Te(["rev-parse","--short","HEAD"]);if(r===void 0)be=void 0;else{let a=Te(["rev-parse","--abbrev-ref","HEAD"]),u=Te(["status","--porcelain"]);be={sha:r,branch:a??"HEAD",dirty:(u?.length??0)>0}}}catch{be=void 0}return be}var g="0.1.0";function n(r,a,u){let m=ve();return{schemaVersion:2,toolVersion:g,bunVersion:Bun.version,platform:{os:process.platform,arch:process.arch},createdAt:new Date().toISOString(),workloads:r,measurements:a,...u!==void 0&&{environment:u},...m!==void 0&&{git:m}}}function h(r,a,u={}){let m=ke(u.prepare),x=Me(u.timeSource),M=typeof u.prepare==="function"?u.prepare.toString():m;return{id:e("wl","subprocess",r,process.cwd(),...M!==void 0||x!==void 0?[M??null,x??null]:[]),kind:"subprocess",command:r,label:a,...m!==void 0&&{prepare:m},...x!==void 0&&{timeSource:x}}}function A(r,a){return{id:e("wl","inprocess",r.name,r.toString()),kind:"inprocess",label:a}}function W(r,a,u={}){return{id:u.params!==void 0?e("wl","inprocess-entry",r,a,u.params):e("wl","inprocess-entry",r,a),kind:"inprocess",entry:{file:r,task:a,...u.group!==void 0&&{group:u.group}},...u.label!==void 0&&{label:u.label},...u.baseline!==void 0&&{baseline:u.baseline},...u.description!==void 0&&{description:u.description},...u.groupDescription!==void 0&&{groupDescription:u.groupDescription},...u.isolated!==void 0&&{isolated:u.isolated},...u.params!==void 0&&{params:u.params},...u.skipped!==void 0&&{skipped:u.skipped}}}function c(r){return{id:e("run",r.workload.id,"timing",r.configFingerprint,Bun.version,g),workloadId:r.workload.id,phase:"timing",instrumented:!1,configFingerprint:r.configFingerprint,trials:r.trials,timing:r.timing,warnings:r.warnings,artifacts:[],memory:Ce(r.trials),...r.interleaved!==void 0&&{interleaved:r.interleaved}}}function Ce(r){let a=r.map((u)=>u.maxRssBytes).filter((u)=>u!==void 0);if(a.length===0)return;return{origin:"resourceUsage",perTrial:r.map((u)=>({rssBytes:u.maxRssBytes})),maxRssBytes:Math.max(...a)}}function l(r){return{id:e("run",r.workload.id,r.phase,r.configFingerprint,Bun.version,g),workloadId:r.workload.id,phase:r.phase,instrumented:!0,configFingerprint:r.configFingerprint,trials:[{i:0,wallNs:r.diagnosticWallNs,exitCode:r.exitCode}],diagnosticWallNs:r.diagnosticWallNs,cpu:r.cpu,heap:r.heap,memory:r.memory,jit:r.jit,warnings:r.warnings,artifacts:r.artifacts}}async function j(r,a,u){let x=await Bun.file(u).arrayBuffer(),M=new Bun.CryptoHasher("sha256");return M.update(x),{id:e("art",r,a,u),kind:a,path:u,sha256:M.digest("hex"),bytes:x.byteLength}}function s(r){return e("cfg",r)}function F(r){return`${JSON.stringify(ge(r),null,2)}
|
|
7
|
+
`}async function i(r,a){await Bun.write(a,F(r))}function We(r){if(r.schemaVersion===2)return r;let{runs:a,comparisons:u,...m}=r;return{...m,schemaVersion:2,measurements:a.map(({baselineRunId:x,...M})=>({...M,...x!==void 0&&{baselineMeasurementId:x}})),...u!==void 0&&{comparisons:u.map(({baselineRunId:x,candidateRunId:M,...I})=>({...I,baselineMeasurementId:x,candidateMeasurementId:M}))}}}async function t(r){let a=await Bun.file(r).text(),u=JSON.parse(a);return We(u)}import{profile as Le}from"bun:jsc";var Ge=new Map([["LLInt","llint"],["Baseline","baseline"],["DFG","dfg"],["FTL","ftl"]]),Ie=4294967295;function Ne(r,a){let u=a??r.interval*1e6,m=new Map,x=[];function M(p,S,P,re){let te=m.get(p);if(te===void 0)te=new Map,m.set(p,te);let Y=S??"",ae=te.get(Y);if(ae===void 0)ae=x.length,te.set(Y,ae),x.push({key:e("fr",p,Y),name:p,url:S,line:P,col:re});return ae}function I(p){let S=p.line===Ie,P=S?void 0:p.line-1,re=S||p.column===Ie?void 0:p.column-1;return M(p.name,p.sourceURL,P,re)}let N=M("(root)",void 0,void 0,void 0),B=1,U={id:0,frameIx:N,children:new Map,selfUs:0,samples:0,totalUs:0},ne=new Map([[0,U]]),oe={llint:0,baseline:0,dfg:0,ftl:0},K=new Map,me=[],ue=[];for(let p of r.traces){let S=p.frames,P=U;for(let Y=S.length-1;Y>=0;Y--){let ae=I(S[Y]),pe=P.children.get(ae);if(!pe)pe={id:B++,frameIx:ae,children:new Map,selfUs:0,samples:0,totalUs:0},P.children.set(ae,pe),ne.set(pe.id,pe);P=pe}P.selfUs+=u,P.samples+=1,me.push(P.id),ue.push(u);let re=S[0],te=re&&Ge.get(re.category);if(te){oe[te]++;let Y=K.get(te)??new Map;Y.set(P.frameIx,(Y.get(P.frameIx)??0)+1),K.set(te,Y)}}function ie(p){let S=p.selfUs;for(let P of p.children.values())S+=ie(P);return p.totalUs=S,S}ie(U);let ce=new Map;function se(p){let S=ce.get(p.frameIx);if(S)S.selfUs+=p.selfUs,S.totalUs+=p.totalUs,S.samples+=p.samples;else ce.set(p.frameIx,{frameIx:p.frameIx,selfUs:p.selfUs,totalUs:p.totalUs,samples:p.samples});for(let P of p.children.values())se(P)}se(U);let le=[...ne.values()].map((p)=>({id:p.id,frameIx:p.frameIx,children:[...p.children.values()].map((S)=>S.id)})),de={origin:"jsc-profile",samplingIntervalUs:u,frames:x,nodes:le,totals:[...ce.values()].sort((p,S)=>S.selfUs-p.selfUs),samples:{nodeIds:me,timeDeltasUs:ue}},D=[...K.entries()].flatMap(([p,S])=>[...S.entries()].sort((P,re)=>re[1]-P[1]).slice(0,3).map(([P,re])=>({tier:p,frameKey:x[P].key,samples:re})));return{cpu:de,jit:{origin:"jsc-profile",tiers:oe,topFramesByTier:D}}}var He=1000;async function b(r,a={}){let u=a.intervalUs??He,m,x=Bun.nanoseconds(),M=await Le(async()=>(m=await r(),m),u),I=Bun.nanoseconds()-x,{cpu:N,jit:B}=Ne(M.stackTraces,u);return{result:m,cpu:N,jit:B,diagnosticWallNs:I}}import xe from"os";function d(r){if(r.length===0)throw Error("computeTimingStats: samples must be non-empty");let a=r.length,u=Ee(r),m=0;for(let p=0;p<a;p++)m+=r[p];let x=m/a,M=o(u,0.5),I=0;for(let p=0;p<a;p++){let S=r[p]-x;I+=S*S}let N=Math.sqrt(I/a),B=u[0],U=u[a-1],ne=o(u,0.25),oe=o(u,0.75),K=oe-ne,me=ne-1.5*K,ue=oe+1.5*K,ie=ne-3*K,ce=oe+3*K,se=0,le=0;for(let p=0;p<a;p++){let S=r[p];if(S<ie||S>ce)le++;else if(S<me||S>ue)se++}let de=o(u,0.99),D=new Float64Array(a);for(let p=0;p<a;p++)D[p]=Math.abs(r[p]-M);D.sort();let Z=o(D,0.5);return{unit:"ns",samples:r,mean:x,median:M,stddev:N,min:B,max:U,outliers:{mild:se,severe:le},p75:oe,p99:de,mad:Z}}function Ee(r){let a=new Float64Array(r.length);return a.set(r),a.sort(),a}function o(r,a){let u=r.length;if(u===1)return r[0];let m=a*(u-1),x=Math.floor(m),M=Math.ceil(m);if(x===M)return r[x];let I=m-x;return r[x]*(1-I)+r[M]*I}var Je=5000000,je=200;function R(r,a,u="subprocess"){let m=[],x=r.samples[0];if(x!==void 0){let I=Ee(r.samples),N=o(I,0.25),U=o(I,0.75)-N;if(x>r.median+3*U&&U>0)m.push({code:"slow-first-run",message:`First run took ${(x/1e6).toFixed(2)}ms, much slower than the median ${(r.median/1e6).toFixed(2)}ms. Consider more warmup.`,data:{firstNs:x,medianNs:r.median}})}if(r.outliers.mild+r.outliers.severe>0)m.push({code:"outliers-detected",message:`${r.outliers.mild+r.outliers.severe} outlier(s) detected (${r.outliers.severe} severe, ${r.outliers.mild} mild).`,data:r.outliers});if(u==="subprocess"&&r.median<Je)m.push({code:"fast-command",message:`Median run time (${(r.median/1e6).toFixed(3)}ms) is very fast; results may be dominated by spawn overhead.`,data:{medianNs:r.median}});if(u==="inprocess"&&r.median<je)m.push({code:"below-timer-resolution",message:`Median run time (${r.median.toFixed(0)}ns) is close to timer resolution; consider a larger batch size or a coarser operation.`,data:{medianNs:r.median}});let M=a.filter((I)=>I!==void 0&&I!==0);if(M.length>0)m.push({code:"nonzero-exit",message:`${M.length} of ${a.length} trial(s) exited non-zero.`,data:{exitCodes:M}});return m}var Ve=200,Fe=64,qe=(()=>{let r=new Uint8Array(4096);for(let a=0;a<r.length;a++)r[a]=a*2654435761&255;return r})();function ze(r,a){let u=a;for(let m=0;m<r.length;m++)u^=r[m],u=Math.imul(u,16777619);return u>>>0}function Ke(r){let a=d(r),u=a.mad??0;return{floorPct:a.median===0?0:u/a.median*100,referenceMedianNs:a.median,samples:r.length}}function Be(r=Ve){let a=r*1e6,u=[],m=0,x=Bun.nanoseconds(),M=0;while(M<a){let I=Bun.nanoseconds();for(let B=0;B<Fe;B++)m^=ze(qe,B);let N=Bun.nanoseconds();u.push((N-I)/Fe),M=Bun.nanoseconds()-x}return Ke(u)}var Xe=0.75;function w(){let[r=0,a=0]=xe.loadavg();return{cpuModel:xe.cpus()[0]?.model??"unknown",cores:xe.availableParallelism(),loadAvg1:r,loadAvg5:a,noise:Be()}}function k(r){if(r.loadAvg1<=r.cores*Xe)return;return{code:"noisy-machine",message:`Load average ${r.loadAvg1.toFixed(2)} exceeds 75% of ${r.cores} available core(s); timing noise may be elevated.`,data:{loadAvg1:r.loadAvg1,cores:r.cores}}}var Ze=500,Qe=20,Oe=3,Ye=10,en=2,nn=0.1,rn=1000,tn=1e4;function Ue(r){let a=Math.log10(Math.max(1,r)/1e6),u=Math.round(Oe+en*a);return Math.min(Ye,Math.max(Oe,u))}function on(r,a){let u=Math.floor(a/r);return Math.min(Qe,Math.max(u,Ue(r)))}var Pe=0;function C(r){if(typeof r==="number")Pe+=r;else if(r!==void 0&&r!==null)Pe+=1}function we(r){return r!==null&&typeof r==="object"&&typeof r.then==="function"}function Ae(r,a){return Math.max(1,Math.ceil(rn/r),Math.ceil(a/(r*tn)))}async function _(r,a={}){let u=(a.budgetMs??Ze)*1e6,m=u*(a.warmup??nn),x=Bun.nanoseconds(),M=0,I=0;while(I<m){let D=r();C(we(D)?await D:D),M++,I=Bun.nanoseconds()-x}let N;if(M>0)N=Math.max(1,I/M);else{let D=Bun.nanoseconds(),Z=r();C(we(Z)?await Z:Z),N=Math.max(1,Bun.nanoseconds()-D)}let B=Ae(N,u);if(B>1){let D=Bun.nanoseconds();for(let Z=0;Z<B;Z++){let p=r();C(we(p)?await p:p)}N=Math.max(1,(Bun.nanoseconds()-D)/B),B=Ae(N,u)}let U=N*B,ne=a.samples??a.minSamples??on(U,u),oe=a.samples!==void 0?0:u,K=[],me=Bun.nanoseconds(),ue=0,ie=0;while(ie<ne||ue<oe){let D=Bun.nanoseconds();for(let p=0;p<B;p++){let S=r();C(we(S)?await S:S)}let Z=Bun.nanoseconds();if(K.push({i:ie,wallNs:(Z-D)/B}),ie++,ue=Bun.nanoseconds()-me,a.gc)Bun.gc(!0);if(a.samples!==void 0&&ie>=a.samples)break}let ce=K.map((D)=>D.wallNs),se=d(ce),le=R(se,[],"inprocess"),de=Ue(U);if(K.length<de)le.push({code:"low-sample-count",message:`Only ${K.length} sample(s) at ~${sn(U)} per trial; ${de} is the floor for this cost class. Raise minSamples or the time budget for a steadier number.`,data:{samples:K.length,target:de,trialCostNs:U}});return{trials:K,timing:se,warnings:le}}function sn(r){if(r>=1e9)return`${(r/1e9).toFixed(2)}s`;if(r>=1e6)return`${(r/1e6).toFixed(1)}ms`;if(r>=1000)return`${(r/1000).toFixed(1)}\xB5s`;return`${r.toFixed(0)}ns`}var Re=[],X,fe;function he(r,a,u,m){let x=X;X={name:r,description:u?.description,isolate:u?.isolate,gc:u?.gc,cpu:u?.cpu,alloc:u?.alloc,before:u?.before,after:u?.after,skip:m.skip,only:m.only};try{a()}finally{X=x}}var Q=Object.assign((r,a,u)=>he(r,a,u,{}),{skip:(r,a,u)=>he(r,a,u,{skip:!0}),only:(r,a,u)=>he(r,a,u,{only:!0})});function ye(r,a,u,m){let x=fe!==void 0||u?.params!==void 0?{...fe,...u?.params}:void 0;Re.push({groupName:X?.name,groupDescription:X?.description,groupIsolate:X?.isolate,groupGc:X?.gc,groupCpu:X?.cpu,groupAlloc:X?.alloc,groupBefore:X?.before,groupAfter:X?.after,name:r,fn:a,baseline:u?.baseline,params:x,skipped:m.skip||X?.skip,only:m.only||X?.only,opts:u})}var ee=Object.assign((r,a,u)=>ye(r,a,u,{}),{skip:(r,a,u)=>ye(r,a,u,{skip:!0}),only:(r,a,u)=>ye(r,a,u,{only:!0})});function L(){return Re}function H(){Re.length=0,X=void 0,fe=void 0}function J(r,a){let u=fe;fe=r;try{return a()}finally{fe=u}}function y(r){return r.groupName?`${r.groupName}/${r.name}`:r.name}function O(r,a){return r.opts?.isolate??r.groupIsolate??a}function G(r,a){return r.opts?.gc??r.groupGc??a}function V(r,a){return r.opts?.cpu??r.groupCpu??a}function z(r,a){return r.opts?.alloc??r.groupAlloc??a}function q(r,a){if(!a)return[...r];let u=new RegExp(a);return r.filter((m)=>u.test(y(m)))}
|
|
8
|
+
export{T,e,d,o,R,E,v,f,g,n,h,A,W,c,l,j,s,F,i,t,b,w,k,C,_,Q,ee,L,H,J,y,O,G,V,z,q};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{T,e,d,o,R,E,v,f,n,h,A,c,l,j,s,F,t,b,w,k,J}from"./chunk-pesqame2.js";function Ie(i,y,g){let _=i[0];if(_==="bun"||_?.endsWith("/bun"))return{argv:[_,...y,...i.slice(1)],env:g};return{argv:i,env:{...process.env,...g,BUN_OPTIONS:y.join(" ")}}}function In(i){return i.startsWith("file://")?i.slice(7):i}function De(i,y,g){let _=i.nodes,C=_.length,H=new Map,W=[],L=new Map,V=new Int32Array(C);for(let Q=0;Q<C;Q++){let oe=_[Q],te=oe.callFrame,me=In(te.url),ce=H.get(te.functionName);if(ce===void 0)ce=new Map,H.set(te.functionName,ce);let de=ce.get(me);if(de===void 0)de=W.length,ce.set(me,de),W.push({key:e("fr",te.functionName,me),name:te.functionName,url:me||void 0,line:te.lineNumber>=0?te.lineNumber:void 0,col:te.columnNumber>=0?te.columnNumber:void 0});V[Q]=de,L.set(oe.id,Q)}let O=Array(C);for(let Q=0;Q<C;Q++){let oe=_[Q];O[Q]={id:oe.id,frameIx:V[L.get(oe.id)],children:oe.children??[]}}let z=new Float64Array(C),ne=new Float64Array(C),{samples:ee,timeDeltas:q}=i;for(let Q=0;Q<ee.length;Q++){let oe=L.get(ee[Q]);if(oe===void 0)continue;z[oe]+=q[Q]??0,ne[oe]+=1}let re=new Int32Array(C).fill(-1);for(let Q=0;Q<C;Q++){let oe=_[Q].children;if(!oe)continue;for(let te of oe){let me=L.get(te);if(me!==void 0)re[me]=Q}}let G=[],ae=[];for(let Q=C-1;Q>=0;Q--)if(re[Q]===-1)ae.push(Q);while(ae.length>0){let Q=ae.pop();G.push(Q);let oe=_[Q].children;if(!oe)continue;for(let te of oe){let me=L.get(te);if(me!==void 0&&re[me]===Q)ae.push(me)}}let pe=new Float64Array(C);for(let Q=G.length-1;Q>=0;Q--){let oe=G[Q];pe[oe]+=z[oe];let te=re[oe];if(te>=0)pe[te]+=pe[oe]}let ue=Array(W.length),se=[];for(let Q=0;Q<C;Q++){let oe=O[Q].frameIx,te=ue[oe];if(te)te.selfUs+=z[Q],te.totalUs+=pe[Q],te.samples+=ne[Q];else{let me={frameIx:oe,selfUs:z[Q],totalUs:pe[Q],samples:ne[Q]};ue[oe]=me,se.push(me)}}return{origin:y,samplingIntervalUs:g,frames:W,nodes:O,totals:se.sort((Q,oe)=>oe.selfUs-Q.selfUs),samples:{nodeIds:i.samples,timeDeltasUs:i.timeDeltas}}}async function Le(i){let y=`${i.artifactDir}/${i.fileName}`,{argv:g,env:_}=Ie(i.argv,["--cpu-prof","--cpu-prof-dir",i.artifactDir,"--cpu-prof-name",i.fileName,"--cpu-prof-interval",String(i.intervalUs)],i.env),C=Bun.nanoseconds(),W=await Bun.spawn(g,{cwd:i.cwd,env:_,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,L=Bun.nanoseconds()-C,V=Bun.file(y);if(!await V.exists())return{diagnosticWallNs:L,exitCode:W,warnings:[{code:"artifact-missing",message:`Expected a .cpuprofile at ${y} after exit ${W}, found nothing. The workload's argv[0] must be a \`bun\` binary for CPU capture.`,data:{artifactPath:y,argv:i.argv}}]};let O=await V.json(),z=De(O,"cpu-prof",i.intervalUs),ne=O.samples.length===0?[{code:"empty-profile",message:"CPU capture produced zero samples."}]:[];return{diagnosticWallNs:L,exitCode:W,artifactPath:y,cpu:z,warnings:ne}}function He(i,y="heap-prof"){let{node_fields:g,node_types:_}=i.snapshot.meta,C=g.indexOf("type"),H=g.indexOf("self_size"),W=g.length,L=_[0];if(C===-1||H===-1||!Array.isArray(L))return{origin:y,typeCounts:[],objectCount:i.snapshot.node_count};let V=L.length,O=Array(V),z=new Map,ne=[],ee=0,q=i.nodes,re=q.length;for(let se=0;se<re;se+=W){let Q=q[se+C],oe=q[se+H]??0;ee+=oe;let te;if(Q>=0&&Q<V){if(te=O[Q],te===void 0)te={type:L[Q],count:0,bytes:0},O[Q]=te,ne.push(te)}else{let me=`unknown(${Q})`;if(te=z.get(me),te===void 0)te={type:me,count:0,bytes:0},z.set(me,te),ne.push(te)}te.count++,te.bytes+=oe}let G=ne.sort((se,Q)=>Q.count-se.count),ae=G.slice(0,20),pe=G.slice(20),ue=ae.map(({type:se,count:Q,bytes:oe})=>({type:se,count:Q,retainedBytes:oe}));if(pe.length>0){let se=0,Q=0;for(let oe of pe)se+=oe.count,Q+=oe.bytes;ue.push({type:"other",count:se,retainedBytes:Q})}return{origin:y,heapSizeBytes:ee,objectCount:i.snapshot.node_count,typeCounts:ue}}async function Ve(i){let y=`${i.artifactDir}/${i.fileName}`,{argv:g,env:_}=Ie(i.argv,["--heap-prof","--heap-prof-dir",i.artifactDir,"--heap-prof-name",i.fileName],i.env),C=Bun.nanoseconds(),W=await Bun.spawn(g,{cwd:i.cwd,env:_,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,L=Bun.nanoseconds()-C,V=Bun.file(y);if(!await V.exists())return{diagnosticWallNs:L,exitCode:W,warnings:[{code:"artifact-missing",message:`Expected a heap snapshot at ${y} after exit ${W}, found nothing. The workload's argv[0] must be a \`bun\` binary for heap capture.`,data:{artifactPath:y,argv:i.argv}}]};let O=await V.json(),z=He(O,"heap-prof");return{diagnosticWallNs:L,exitCode:W,artifactPath:y,heap:z,warnings:[]}}import{Session as Dn}from"inspector/promises";var Sn=1000;async function ze(i,y={}){let g=y.intervalUs??Sn,_=new Dn;_.connect();let C=Bun.nanoseconds();try{await _.post("Profiler.enable"),await _.post("Profiler.setSamplingInterval",{interval:g}),await _.post("Profiler.start");let H=await i(),{profile:W}=await _.post("Profiler.stop"),L=Bun.nanoseconds()-C,V=De(W,"inspector",g);return{result:H,cpu:V,diagnosticWallNs:L}}finally{_.disconnect()}}function Nn(i){let y=i>>>0;return()=>{y=y+1831565813|0;let g=Math.imul(y^y>>>15,1|y);return g=g+Math.imul(g^g>>>7,61|g)^g,((g^g>>>14)>>>0)/4294967296}}var Se=2000,Fn=2000;function Je(i){let y=i.length,g=y>>1;return y%2===0?(i[g-1]+i[g])/2:i[g]}function Ge(i,y,g){if(i.length<=g)return i;let _=[...i];for(let C=0;C<g;C++){let H=C+Math.floor(y()*(_.length-C)),W=_[C];_[C]=_[H],_[H]=W}return _.slice(0,g)}function Ke(i,y){let g=i.length,_=new Float64Array(g);for(let C=0;C<g;C++)_[C]=i[Math.floor(y()*g)];return _.sort(),Je(_)}function Ye(i,y,g={}){let _=g.seed??(Date.now()^Math.imul(i.length,2654435761))>>>0,C=Nn(_),H=g.iterations??Fn,W=i.length>Se||y.length>Se,L=Ge(i,C,Se),V=Ge(y,C,Se),O=new Float64Array(L);O.sort();let z=Je(O),ne=new Float64Array(H);for(let ee=0;ee<H;ee++){let q=Ke(L,C),re=Ke(V,C);ne[ee]=z===0?re-q===0?0:1/0:(re-q)/z*100}return ne.sort(),{ci95:[o(ne,0.025),o(ne,0.975)],seed:_,data:{subsampled:W,iterations:H}}}function On(i){let y=i<0?-1:1,g=Math.abs(i),_=0.254829592,C=-0.284496736,H=1.421413741,W=-1.453152027,L=1.061405429,V=0.3275911,O=1/(1+0.3275911*g),z=1-((((1.061405429*O+-1.453152027)*O+1.421413741)*O+-0.284496736)*O+0.254829592)*O*Math.exp(-g*g);return y*z}function Un(i){return 0.5*(1+On(i/Math.SQRT2))}function qe(i,y){let g=i.length,_=y.length,C=g+_,H=[...i.map((G)=>({v:G,group:0})),...y.map((G)=>({v:G,group:1}))].sort((G,ae)=>G.v-ae.v),W=new Float64Array(C),L=0,V=0;while(V<C){let G=V;while(G+1<C&&H[G+1].v===H[V].v)G++;let ae=(V+G)/2+1;for(let ue=V;ue<=G;ue++)W[ue]=ae;let pe=G-V+1;if(pe>1)L+=pe**3-pe;V=G+1}let O=0;for(let G=0;G<C;G++)if(H[G].group===0)O+=W[G];let z=O-g*(g+1)/2,ne=g*_/2,ee=Math.sqrt(g*_*(C+1-L/(C*(C-1)))/12),q=ee===0?0:(z-ne)/ee,re=Math.min(1,Math.max(0,2*(1-Un(Math.abs(q)))));return{u:z,z:q,pValue:re}}var Me={timingPct:5,frameSelfPct:10,heapTypePct:10,minFrameSelfUs:1000,alpha:0.01,bootstrapIterations:2000},Be=5;function Ne(i,y){if(i===0)return y===0?0:1/0;return(y-i)/i*100}function ke(i,y,g){return i.measurements.find((_)=>_.workloadId===y&&_.phase===g)}function x(i,y,g=Me){let _=new Set(y.workloads.map((H)=>H.id)),C=[];for(let H of i.workloads){if(!_.has(H.id))continue;let W=M(i,y,H.id,g);if(W)C.push(W)}return C}function M(i,y,g,_=Me){let C=ke(i,g,"timing"),H=ke(y,g,"timing"),W=ke(i,g,"cpu"),L=ke(y,g,"cpu"),V=ke(i,g,"heap"),O=ke(y,g,"heap"),z=y.workloads.find((se)=>se.id===g),ne=C?.id??W?.id??V?.id,ee=H?.id??L?.id??O?.id??z?.id;if(!ne||!ee)return;let q=!1,re=[],G=Math.max(_.timingPct,i.environment?.noise.floorPct??0,y.environment?.noise.floorPct??0),ae;if(C?.timing&&z?.skipped&&!H?.timing)ae={medianDeltaPct:0,meanDeltaPct:0,effectPct:0,verdict:"unchanged"},re.push({code:"skipped",message:"Candidate has no timing measurement for this workload (task.skip()); treated as unchanged.",data:{workloadId:g}});else if(C?.timing&&H?.timing){let se=C.timing.samples,Q=H.timing.samples,oe=Ne(C.timing.median,H.timing.median),te=Ne(C.timing.mean,H.timing.mean),me=(ce,de)=>{if(ce>G)return"regressed";if(de<-G)return"improved";return"unchanged"};if(se.length<Be||Q.length<Be){let ce=me(oe,oe);if(ce==="regressed")q=!0;ae={medianDeltaPct:oe,meanDeltaPct:te,effectPct:oe,verdict:ce},re.push({code:"thin-comparison",message:`Only ${se.length} baseline / ${Q.length} candidate sample(s); falling back to a point-estimate threshold instead of a bootstrap CI and Mann-Whitney test (needs ${Be}+ per side).`,data:{baseSamples:se.length,candSamples:Q.length}})}else{let ce=Ye(se,Q,{iterations:_.bootstrapIterations}),de=qe(se,Q),ie=de.pValue<_.alpha?me(ce.ci95[0],ce.ci95[1]):"unchanged";if(ie==="regressed")q=!0;ae={medianDeltaPct:oe,meanDeltaPct:te,effectPct:oe,ci95:ce.ci95,pValue:de.pValue,seed:ce.seed,verdict:ie}}}let pe;if(W?.cpu&&L?.cpu){let se=new Map(W.cpu.totals.map((ce)=>[W.cpu.frames[ce.frameIx].key,ce])),Q=new Map(L.cpu.totals.map((ce)=>[L.cpu.frames[ce.frameIx].key,ce])),oe=new Map(W.cpu.frames.map((ce)=>[ce.key,ce.name])),te=new Map(L.cpu.frames.map((ce)=>[ce.key,ce.name]));pe=[...new Set([...se.keys(),...Q.keys()])].map((ce)=>{let de=se.get(ce)?.selfUs??0,ie=Q.get(ce)?.selfUs??0;return{frameKey:ce,name:te.get(ce)??oe.get(ce)??ce,baseSelfUs:de,candSelfUs:ie,deltaPct:Ne(de,ie)}}).sort((ce,de)=>Math.abs(de.deltaPct)-Math.abs(ce.deltaPct));for(let ce of pe)if((ce.baseSelfUs>=_.minFrameSelfUs||ce.candSelfUs>=_.minFrameSelfUs)&&ce.deltaPct>_.frameSelfPct)q=!0}let ue;if(V?.heap&&O?.heap){let se=new Map(V.heap.typeCounts.map((te)=>[te.type,te])),Q=new Map(O.heap.typeCounts.map((te)=>[te.type,te]));ue=[...new Set([...se.keys(),...Q.keys()])].map((te)=>{let me=se.get(te),ce=Q.get(te);return{type:te,baseCount:me?.count??0,candCount:ce?.count??0,baseBytes:me?.retainedBytes,candBytes:ce?.retainedBytes,deltaPct:Ne(me?.count??0,ce?.count??0)}}).sort((te,me)=>Math.abs(me.deltaPct)-Math.abs(te.deltaPct));for(let te of ue)if(te.deltaPct>_.heapTypePct)q=!0}return{id:e("cmp",ne,ee),baselineMeasurementId:ne,candidateMeasurementId:ee,timing:ae,...re.length>0&&{warnings:re},frames:pe,heapTypes:ue,thresholds:{..._,effectiveTimingPct:G},verdict:q?"fail":"pass"}}var Ce="node_modules/.cache/ostia",Wn=".ostia/baselines",Bn={runs:null,warmup:3,outDir:Ce,baselineDir:Wn,baseline:"main",cpuIntervalUs:1000,thresholds:Me,workloads:[]};function Ze(i){return{...Bn,...i,thresholds:{...Me,...i.thresholds??{}}}}async function Qe(i){let y=Bun.file(i);if(!await y.exists())return;return Ze(await y.json())}async function Xe(i){let y=i.startsWith("/")?i:`${process.cwd()}/${i}`;if(!await Bun.file(y).exists())return;let g=await import(y);return Ze(g.default??{})}async function I(i){if(i!==void 0)return i.endsWith(".ts")?Xe(i):Qe(i);return await Xe("ostia.config.ts")??Qe("ostia.config.json")}function a(i,y){return`${i.baselineDir}/${y??i.baseline}.json`}var En=10,An=3000000000,jn=3;function Ee(i){let y=i.warmup??jn,g=i.samples,_=i.minSamples??En,C=g??_,H=g!==void 0?0:i.budgetMs!==void 0?i.budgetMs*1e6:An,W=i.timeSource!==void 0,L=[],V=0,O=0;function z(){if(g!==void 0)return O>=g;return O>=C&&V>=H}async function ne(ee,q){if(i.prepare)await v(i.prepare,{phase:ee,index:q},{cwd:i.cwd,env:i.env});return E(i)}return{async warmup(){for(let ee=0;ee<y;ee++)await ne("warmup",ee)},async step(){if(z())return!1;let ee=await ne("timing",O);return L.push({i:O,wallNs:ee.wallNs,exitCode:ee.exitCode,userNs:ee.userNs,systemNs:ee.systemNs,maxRssBytes:ee.maxRssBytes,...ee.reportedNs!==void 0&&{reportedNs:ee.reportedNs}}),V+=ee.wallNs,O++,!0},done:z,result(){let ee=L.map((G)=>W?G.reportedNs??G.wallNs:G.wallNs),q=d(ee),re=R(q,L.map((G)=>G.exitCode),W?"reported":"subprocess");return{trials:L,timing:q,warnings:re}}}}async function Ae(i){await i.warmup();while(await i.step());}async function U(i){let y=Ee(i);return await Ae(y),y.result()}async function P(i,y){let g=new Set;for(let _ of i)for await(let C of new Bun.Glob(_).scan({cwd:y,absolute:!1}))g.add(C);return[...g].sort()}var en=new URL("./runner.ts",import.meta.url).pathname;function S(){return Math.max(1,navigator.hardwareConcurrency||1)}async function N(i,y){return P(i,y)}function _n(i){if(i===void 0)return;return i==="auto"?S():i}async function B(i,y,g=process.cwd()){return{suites:i.suites.length>0?i.suites:y?.suites?await N(y.suites,g):[],budgetMs:i.budgetMs??y?.budgetMs,samples:i.samples??y?.samples,minSamples:i.minSamples??y?.minSamples,jobs:i.jobs??_n(y?.jobs),gc:i.gc||(y?.gc??!1),cpu:i.cpu||(y?.cpu??!1),alloc:i.alloc||(y?.alloc??!1),filter:i.filter??y?.filter,isolate:i.isolate||(y?.isolate??!1),preload:i.preload.length>0?i.preload:y?.preload??[],bunFlags:i.bunFlags,outDir:i.outDir??y?.outDir,noiseCheck:i.noiseCheck,cwd:g}}async function m(i){let g=`${i.outDir??Ce}/bench-tmp`,_=i.cwd??process.cwd(),C=Math.max(1,Math.floor(i.jobs??1)),H={budgetMs:i.budgetMs,samples:i.samples,minSamples:i.minSamples,gc:i.gc,cpu:i.cpu,alloc:i.alloc,noiseCheck:i.noiseCheck},W=(ne)=>ne.startsWith("/")?ne:`${_}/${ne}`,L=i.suites.map(W),V=(i.preload??[]).map(W),O=i.bunFlags??[],z=async(ne,ee)=>{let q=new Set,re=0,G,ae=async()=>{while(G===void 0&&re<ne.length){let pe=re++;try{let ue=Bun.spawn(ne[pe],{cwd:_,stdout:"inherit",stderr:"inherit",stdin:"ignore"});q.add(ue);let se=await ue.exited;if(q.delete(ue),se!==0)throw Error(`Bench suite failed: ${ee(pe)} (runner exited ${se})`)}catch(ue){G??=ue instanceof Error?ue:Error(String(ue));for(let se of q)se.kill()}}};if(await Promise.all(Array.from({length:Math.min(C,ne.length)},ae)),G)throw G};try{let ne=L.map((te)=>`${g}/${e("bench-plan",te)}.json`),ee=L.map((te)=>`${g}/${e("bench-primary",te)}.json`),q=L.map((te,me)=>["bun",...O,en,te,ee[me],JSON.stringify({...H,filter:i.filter,isolate:i.isolate,preload:V,planPath:ne[me]})]);await z(q,(te)=>i.suites[te]);let re=await Promise.all(ne.map(async(te)=>{let{tasks:me}=await Bun.file(te).json();return me})),G=await Promise.all(ee.map(t)),ae=[];for(let te=0;te<re.length;te++)for(let me of re[te])if(me.isolate)ae.push({suiteIndex:te,taskIds:[me.id]});let pe=ae.map((te,me)=>`${g}/${e("bench-item",L[te.suiteIndex],me)}.json`),ue=ae.map((te,me)=>["bun",...O,en,L[te.suiteIndex],pe[me],JSON.stringify({...H,taskIds:te.taskIds,preload:V,markIsolated:!0})]);await z(ue,(te)=>i.suites[ae[te].suiteIndex]);let se=await Promise.all(pe.map(t)),Q=[],oe=[];for(let te=0;te<re.length;te++){let me=G[te],ce=new Map;for(let le of me.measurements){let fe=ce.get(le.workloadId)??[];fe.push(le),ce.set(le.workloadId,fe)}let de=0,ie=new Map;ae.forEach((le,fe)=>{if(le.suiteIndex===te)ie.set(le.taskIds[0],se[fe])});for(let le of re[te])if(le.isolate){let fe=ie.get(le.id),be=fe.workloads[0];Q.push(be);for(let ve of fe.measurements)if(ve.workloadId===be.id)oe.push(ve)}else{let fe=me.workloads[de];Q.push(fe),de++;for(let be of ce.get(fe.id)??[])oe.push(be)}}return n(Q,oe,G[0]?.environment)}finally{await Bun.spawn(["rm","-rf",g]).exited}}function K(i,y,g=8){if(g<=1)throw RangeError(`range: multiplier must be > 1, got ${g}`);if(i<=0)throw RangeError(`range: start must be > 0, got ${i}`);let _=[];for(let C=i;C<=y;C*=g)_.push(C);if(!_.includes(y))_.push(y);return _}function X(i,y){let g=Object.keys(i),_=(C,H)=>{if(C===g.length){J(H,()=>y(H));return}let W=g[C];for(let L of i[W])_(C+1,{...H,[W]:L})};_(0,{})}function xe(i,y){if(y){let g=i.measurements.find((_)=>_.id===y);return g?.cpu?[g]:[]}return i.measurements.filter((g)=>g.phase==="cpu"&&g.cpu)}function Pe(i){let y=i.nodes,g=y.length,_=Ln(i),C=new Int32Array(g).fill(-1);for(let V=0;V<g;V++)for(let O of y[V].children){let z=_(O);if(z!==-1)C[z]=V}let H=[];for(let V=0;V<g;V++)if(C[V]===-1)H.push(V);let W=[],L=[];for(let V=H.length-1;V>=0;V--)L.push(H[V]);while(L.length>0){let V=L.pop();W.push(V);for(let O of y[V].children){let z=_(O);if(z!==-1&&C[z]===V)L.push(z)}}return{count:g,indexOf:_,parentIx:C,roots:H,order:W}}function Ln(i){let y=i.nodes,g=y.length,_=1/0,C=-1/0,H=!0;for(let L=0;L<g;L++){let V=y[L].id;if(!Number.isInteger(V)){H=!1;break}if(V<_)_=V;if(V>C)C=V}if(H&&g>0&&C-_<g*4+64){let L=C-_+1,V=new Int32Array(L).fill(-1);for(let O=0;O<g;O++)V[y[O].id-_]=O;return(O)=>{let z=O-_;return z>=0&&z<L?V[z]:-1}}let W=new Map;for(let L=0;L<g;L++)W.set(y[L].id,L);return(L)=>W.get(L)??-1}function nn(i,y){let{count:g,indexOf:_,parentIx:C,order:H}=y,W=new Float64Array(g),L=new Float64Array(g),V=i.samples?.nodeIds??[],O=i.samples?.timeDeltasUs??[];for(let ne=0;ne<V.length;ne++){let ee=_(V[ne]);if(ee===-1)continue;W[ee]+=O[ne]??0,L[ee]+=1}let z=new Float64Array(g);for(let ne=H.length-1;ne>=0;ne--){let ee=H[ne];z[ee]+=W[ee];let q=C[ee];if(q>=0)z[q]+=z[ee]}return{selfUs:W,totalUs:z,samples:L}}var tn={name:"collapsed",async render(i,y={}){return{files:xe(i,y.measurementId).map((C)=>{let H=C.cpu,{nodes:W,frames:L}=H,V=Pe(H),O=Array(V.count);for(let re of V.order){let G=L[W[re].frameIx].name||"(anonymous)",ae=V.parentIx[re];O[re]=ae===-1?G:`${O[ae]};${G}`}let z=new Float64Array(V.count),ne=[],ee=H.samples?.nodeIds??[];for(let re=0;re<ee.length;re++){let G=V.indexOf(ee[re]);if(G===-1)continue;if(z[G]++===0)ne.push(G)}let q=Array(ne.length);for(let re=0;re<ne.length;re++){let G=ne[re];q[re]=`${O[G]} ${z[G]}`}return{path:`${C.id}.collapsed.txt`,content:q.join(`
|
|
3
|
+
`)+(q.length>0?`
|
|
4
|
+
`:"")}})}}};var rn={name:"cpuprofile",async render(i,y={}){let g=xe(i,y.measurementId),_=[],C=[];for(let H of g){if(H.cpu?.origin!=="cpu-prof"&&H.cpu?.origin!=="inspector"){C.push(`${H.id} (origin ${H.cpu?.origin??"unknown"} has no .cpuprofile artifact to pass through)`);continue}let W=H.artifacts.find((V)=>V.kind==="cpuprofile");if(!W){C.push(`${H.id} (no cpuprofile artifact recorded on this run)`);continue}let L=Bun.file(W.path);if(!await L.exists()){C.push(`${H.id} (artifact missing on disk: ${W.path})`);continue}_.push({path:`${H.id}.cpuprofile`,content:await L.text()})}if(_.length===0&&C.length>0)return{text:`No .cpuprofile artifacts available:
|
|
5
|
+
${C.map((H)=>` - ${H}`).join(`
|
|
6
|
+
`)}
|
|
7
|
+
`};return{files:_}}};var sn={name:"json",async render(i){return{text:F(i)}}};var on={name:"jsonl",async render(i){let{measurements:y,...g}=i;return{text:`${[T(g),...y.map((C)=>T(C))].join(`
|
|
8
|
+
`)}
|
|
9
|
+
`}}};var Hn={ns:1,\u{b5}s:1000,ms:1e6,s:1e9};function Te(i){let y=Math.abs(i);if(y>=1e9)return"s";if(y>=1e6)return"ms";if(y>=1000)return"\xB5s";return"ns"}function Vn(i){let y=Math.floor(Math.log10(Math.max(Math.abs(i),1)))+1;return Math.max(1,3-y)}function ge(i,y=Te(i)){let g=i/Hn[y];return`${g.toFixed(Vn(g))} ${y}`}function Fe(i){return`${i.cpuModel} \xB7 ${i.cores} cores \xB7 load ${i.loadAvg1.toFixed(1)} \xB7 noise floor ${i.noise.floorPct.toFixed(1)}%`}function p(i){return`${i.sha} (${i.branch}${i.dirty?", dirty":""})`}function r(i){return i?.label??i?.command?.join(" ")??i?.entry?.task??i?.id??"unknown"}function an(i){return(i/1e6).toFixed(3)}function cn(i){if(!i?.params)return"";return` (${Object.entries(i.params).map(([g,_])=>`${g}=${_}`).join(", ")})`}function zn(i){let y;for(let g of i){let _=g?.params?Object.keys(g.params):void 0;if(_?.length!==2)return;if(y===void 0)y=_;else if(_.length!==y.length||_.some((C,H)=>C!==y[H]))return}return y}var un=10,mn=10,pn={name:"markdown",async render(i){let y=new Map(i.workloads.map((W)=>[W.id,W])),g=[];g.push("# Profile Report","");let _=i.git?` \xB7 ${p(i.git)}`:"";if(g.push(`Bun ${i.bunVersion} \xB7 ostia ${i.toolVersion} \xB7 ${i.platform.os}/${i.platform.arch} \xB7 ${i.createdAt}${_}`,""),i.environment)g.push(Fe(i.environment),"");let C=i.measurements.filter((W)=>W.phase==="timing"&&W.timing!==void 0),H=i.workloads.filter((W)=>W.skipped&&!C.some((L)=>L.workloadId===W.id));if(C.length>0||H.length>0){g.push("## Timing","");let W=new Map,L=[];for(let z of C){let ne=y.get(z.workloadId)?.entry?.group;if(ne===void 0){L.push(z);continue}let ee=W.get(ne);if(ee)ee.push(z);else W.set(ne,[z])}let V=new Map;for(let[z,ne]of W){let ee=zn(ne.map((q)=>y.get(q.workloadId)));if(ee)V.set(z,{keys:ee,runs:ne});else L.push(...ne)}if(L.length>0||H.length>0){g.push("| Task | Median | Spread (p75\u2026p99) | Mean \xB1 SD | Range | MAD |","|---|---|---|---|---|---|");for(let z of L){let ne=y.get(z.workloadId),ee=r(ne)+cn(ne),q=z.timing,re=Te(q.median),G=q.p75??q.median,ae=q.p99??q.max,pe=q.mad!==void 0?ge(q.mad,re):"-";g.push(`| ${ee} | ${ge(q.median,re)} | ${ge(G,re)}\u2026${ge(ae,re)} | ${ge(q.mean,re)} \xB1 ${ge(q.stddev,re)} | ${ge(q.min,re)}\u2026${ge(q.max,re)} | ${pe} |`)}for(let z of H){let ne=r(z)+cn(z);g.push(`| ${ne} | - skipped | - | - | - | - |`)}g.push("")}for(let[z,{keys:ne,runs:ee}]of V){let[q,re]=ne,G=[],ae=[],pe=new Map;for(let ue of ee){let se=y.get(ue.workloadId).params,Q=se[q],oe=se[re];if(!G.includes(Q))G.push(Q);if(!ae.includes(oe))ae.push(oe);pe.set(`${Q}\x00${oe}`,ue)}g.push(`### ${z} (${q} \xD7 ${re})`,""),g.push(`| ${q} \\ ${re} | ${ae.join(" | ")} |`,`|---|${ae.map(()=>"---").join("|")}|`);for(let ue of G){let se=ae.map((Q)=>{let oe=pe.get(`${ue}\x00${Q}`);return oe?ge(oe.timing.median):"-"});g.push(`| ${ue} | ${se.join(" | ")} |`)}g.push("")}let O=C.filter((z)=>z.warnings.length>0);if(O.length>0){g.push("### Warnings","");for(let z of O){let ne=r(y.get(z.workloadId));for(let ee of z.warnings)g.push(`- **${ne}**: ${ee.message} (\`${ee.code}\`)`)}g.push("")}}for(let W of i.measurements){if(W.phase!=="cpu"&&W.phase!=="heap")continue;let L=r(y.get(W.workloadId));if(W.phase==="cpu"){if(g.push(`## CPU capture - ${L}`,""),g.push(`instrumented, diagnostic wall ${an(W.diagnosticWallNs??0)}ms`,""),W.cpu){g.push(`origin: \`${W.cpu.origin}\`, interval: ${W.cpu.samplingIntervalUs}\xB5s`,""),g.push("| Self % | Self (ms) | Total (ms) | Frame |","|---|---|---|---|");let V=W.cpu.totals.reduce((O,z)=>O+z.selfUs,0)||1;for(let O of W.cpu.totals.slice(0,un)){let z=W.cpu.frames[O.frameIx],ne=(O.selfUs/V*100).toFixed(1);g.push(`| ${ne}% | ${(O.selfUs/1000).toFixed(2)} | ${(O.totalUs/1000).toFixed(2)} | ${z?.name||"(anonymous)"} |`)}if(g.push(""),W.jit){let O=W.jit.tiers;g.push(`JIT tiers: LLInt ${O.llint} \xB7 Baseline ${O.baseline} \xB7 DFG ${O.dfg} \xB7 FTL ${O.ftl}`,"")}}}else if(g.push(`## Heap snapshot - ${L}`,""),g.push(`instrumented, diagnostic wall ${an(W.diagnosticWallNs??0)}ms`,""),W.heap){g.push(`${W.heap.objectCount??"?"} objects, ${((W.heap.heapSizeBytes??0)/1e6).toFixed(2)}MB`,""),g.push("| Count | Type |","|---|---|");for(let V of W.heap.typeCounts.slice(0,mn))g.push(`| ${V.count} | ${V.type} |`);g.push("")}for(let V of W.artifacts)g.push(`- artifact: \`${V.path}\``);for(let V of W.warnings)g.push(`- ! ${V.message} (\`${V.code}\`)`);if(W.artifacts.length>0||W.warnings.length>0)g.push("")}if(i.comparisons&&i.comparisons.length>0){g.push("## Comparisons","");for(let W of i.comparisons){let L=i.measurements.find((O)=>O.id===W.candidateMeasurementId),V=r(L?y.get(L.workloadId):y.get(W.candidateMeasurementId));if(g.push(`### ${W.verdict==="pass"?"\u2713":"\u2717"} ${V}`,""),W.timing){let O=W.timing.medianDeltaPct>0?"+":"";g.push(`- timing: ${O}${W.timing.medianDeltaPct.toFixed(1)}% median (**${W.timing.verdict}**)`)}for(let O of W.frames?.slice(0,un)??[]){if(Math.abs(O.deltaPct)<0.5)continue;let z=O.deltaPct>0?"+":"";g.push(`- frame \`${O.name}\`: ${z}${O.deltaPct.toFixed(1)}% self-time (${(O.baseSelfUs/1000).toFixed(2)}ms \u2192 ${(O.candSelfUs/1000).toFixed(2)}ms)`)}for(let O of W.heapTypes?.slice(0,mn)??[]){if(Math.abs(O.deltaPct)<0.5)continue;let z=O.deltaPct>0?"+":"";g.push(`- heap \`${O.type}\`: ${z}${O.deltaPct.toFixed(1)}% count (${O.baseCount} \u2192 ${O.candCount})`)}g.push("")}}return{text:g.join(`
|
|
10
|
+
`)}}};var Gn=15;function je(i){return`n${i}`}function Kn(i,y,g){return`${(i||"(anonymous)").replace(/"/g,"'")} (self ${(y/1000).toFixed(2)}ms, total ${(g/1000).toFixed(2)}ms)`}function Jn(i,y,g,_){let C=[];if(_<=0)return C;for(let H=0;H<y;H++){if(H===g)continue;let W=i[H];if(C.length===_&&W<=i[C[_-1]])continue;let L=C.length;while(L>0&&i[C[L-1]]<W)L--;if(C.splice(L,0,H),C.length>_)C.pop()}return C}var ln={name:"mermaid",async render(i,y={}){let g=y.topN??Gn;return{files:xe(i,y.measurementId).map((H)=>{let W=H.cpu,{nodes:L,frames:V}=W,O=Pe(W),{selfUs:z,totalUs:ne}=nn(W,O),{parentIx:ee}=O,q=O.roots[0]??-1,re=Jn(z,O.count,q,g),G=new Set(q!==-1?[q]:[]),ae=[];for(let ue of re){ae.length=0;for(let se=ue;se!==-1;se=ee[se])ae.push(se);for(let se=ae.length-1;se>=0;se--)G.add(ae[se])}let pe=["graph TD"];for(let ue of G){let se=L[ue].id;pe.push(` ${je(se)}["${Kn(V[L[ue].frameIx].name,z[ue],ne[ue])}"]`)}for(let ue of G){let se=ee[ue];if(se!==-1&&G.has(se))pe.push(` ${je(L[se].id)} --> ${je(L[ue].id)}`)}return{path:`${H.id}.mermaid.md`,content:`${pe.join(`
|
|
11
|
+
`)}
|
|
12
|
+
`}})}}};function Oe(i){if(!i?.entry)return;if(i.entry.group!==void 0)return i.entry.group;let y=i.entry.task,g=y.lastIndexOf("/");return g===-1?void 0:y.slice(0,g)}function Ue(i){let y=Math.min(...i.map((C)=>C.run.timing.median)),g=new Map;for(let C of i){let H=Oe(C.workload);if(H===void 0)continue;let W=g.get(H);if(W)W.push(C);else g.set(H,[C])}let _=new Map;for(let C of i){let H=Oe(C.workload);if(H===void 0){_.set(C,y);continue}let W=g.get(H)??[C],L=W.find((V)=>V.workload?.baseline);_.set(C,L?L.run.timing.median:Math.min(...W.map((V)=>V.run.timing.median)))}return _}function he(i){return Number.isFinite(i)?Number(i.toPrecision(6)):i}function Yn(i,y){return i?.entry?.task??i?.label??i?.command?.join(" ")??y.workloadId}function dn(i,y){if(y?.entry?.group!==void 0)i.group=y.entry.group;if(y?.description!==void 0)i.description=y.description;if(y?.groupDescription!==void 0)i.groupDescription=y.groupDescription;if(y?.params!==void 0)i.params=y.params}function fn(i){if(!i?.timing)return;let y={medianPct:he(i.timing.medianDeltaPct),meanPct:he(i.timing.meanDeltaPct),verdict:i.timing.verdict,pass:i.verdict==="pass"};if(i.timing.ci95)y.ci95=[he(i.timing.ci95[0]),he(i.timing.ci95[1])];if(i.timing.pValue!==void 0)y.pValue=he(i.timing.pValue);return y}function qn(i,y){let g={task:i.entry?.task??i.label??i.id,skipped:!0,warnings:[]};dn(g,i);let _=fn(y);if(_)g.delta=_;return g}function Qn(i){let y=new Map(i.workloads.map((O)=>[O.id,O])),g=i.measurements.filter((O)=>O.phase==="timing"&&O.timing!==void 0).map((O)=>({run:O,workload:y.get(O.workloadId)})),_=g.length>1?Ue(g):void 0,C=new Map((i.comparisons??[]).map((O)=>[O.candidateMeasurementId,O])),H=new Set(g.map((O)=>O.run.workloadId)),W=new Map;for(let O of i.measurements){if(O.phase!=="cpu"||O.warnings.length===0)continue;let z=W.get(O.workloadId)??[];W.set(O.workloadId,[...z,...O.warnings])}let L=i.workloads.filter((O)=>O.skipped&&!H.has(O.id)).map((O)=>qn(O,C.get(O.id)));return[...g.map((O)=>{let{run:z,workload:ne}=O,ee=z.timing,q={task:Yn(ne,z),unit:"ns",samples:ee.samples.length,mean:he(ee.mean),median:he(ee.median),stddev:he(ee.stddev),stddevPct:he(ee.mean===0?0:ee.stddev/ee.mean*100),min:he(ee.min),max:he(ee.max),warnings:[...z.warnings,...W.get(z.workloadId)??[]].map((G)=>G.data?{code:G.code,data:G.data}:{code:G.code})};if(ee.p75!==void 0)q.p75=he(ee.p75);if(ee.p99!==void 0)q.p99=he(ee.p99);if(ee.mad!==void 0)q.mad=he(ee.mad);if(dn(q,ne),_)q.relative=he(ee.median/(_.get(O)??ee.median));if(ne?.baseline)q.baseline=!0;let re=fn(C.get(z.id));if(re)q.delta=re;return q}),...L]}var gn={name:"minimal",async render(i){let y=Qn(i).map((g)=>JSON.stringify(g));return{text:y.length>0?`${y.join(`
|
|
13
|
+
`)}
|
|
14
|
+
`:""}}};var Xn="https://www.speedscope.app/file-format-schema.json";function hn(i){return i?.label??i?.command?.join(" ")??i?.entry?.task??"profile"}var bn={name:"speedscope",async render(i,y={}){let g=xe(i,y.measurementId),_=new Map(i.workloads.map((H)=>[H.id,H]));return{files:g.map((H)=>{let W=H.cpu,{nodes:L}=W,V=Pe(W),O=W.samples?.nodeIds??[],z=W.samples?.timeDeltasUs??[],ne=Array(V.count);for(let G of V.order){let ae=V.parentIx[G],pe=L[G].frameIx;ne[G]=ae===-1?[pe]:[...ne[ae],pe]}let ee=Array(O.length);for(let G=0;G<O.length;G++){let ae=V.indexOf(O[G]);ee[G]=ae===-1?[]:ne[ae]}let q=0;for(let G=0;G<z.length;G++)q+=z[G];let re={$schema:Xn,exporter:"ostia",name:hn(_.get(H.workloadId)),activeProfileIndex:0,shared:{frames:W.frames.map((G)=>({name:G.name||"(anonymous)",file:G.url,line:G.line!==void 0?G.line+1:void 0}))},profiles:[{type:"sampled",name:hn(_.get(H.workloadId)),unit:"microseconds",startValue:0,endValue:q,samples:ee,weights:z}]};return{path:`${H.id}.speedscope.json`,content:`${JSON.stringify(re,null,2)}
|
|
15
|
+
`}})}}};function Zn(i){return(i/1e6).toFixed(3)}function et(i){if(i<1024)return`${i.toFixed(0)}B`;if(i<1048576)return`${(i/1024).toFixed(2)}KB`;return`${(i/1048576).toFixed(2)}MB`}var yn={name:"table",async render(i){let y=i.measurements.filter((ie)=>ie.phase==="timing"&&ie.timing!==void 0),g=new Map(i.workloads.map((ie)=>[ie.id,ie])),_=i.environment?[Fe(i.environment),""]:[],C=i.workloads.filter((ie)=>ie.skipped&&!y.some((le)=>le.workloadId===ie.id));if(y.length===0&&C.length===0){let ie=wn(i,g);return{text:ie.length>0?`${[..._,...ie].join(`
|
|
16
|
+
`)}
|
|
17
|
+
`:`(no timing runs)
|
|
18
|
+
`}}let H=new Map(y.map((ie)=>[ie.workloadId,ie])),W=[],L=[];for(let ie of i.workloads){let le=H.get(ie.id),fe=r(ie);if(le){let be={kind:"measured",run:le,workload:ie,label:fe};W.push(be),L.push(be)}else if(ie.skipped)W.push({kind:"skipped",workload:ie,label:fe})}let V=new Map(i.measurements.filter((ie)=>ie.phase==="memstats"&&ie.memory?.bytesPerOp!==void 0).map((ie)=>[ie.workloadId,ie.memory.bytesPerOp])),O=V.size>0,z=L.length>1,ne=Ue(L),ee=new Map,q=new Map,re;for(let ie of W){let le=Oe(ie.workload);if(le!==re){if(le!==void 0)q.set(ie,le);re=le}ee.set(ie,le!==void 0?" ":"")}let G=Math.max(4,...W.map((ie)=>ee.get(ie).length+ie.label.length)),ae=10,pe=18,ue=18,se=10,Q=[..._],oe=O?` ${"Alloc/op".padEnd(se)}`:"",te=`${"Task".padEnd(G)} ${"Median".padEnd(ae)} ${"Spread".padEnd(pe)} ${"Range".padEnd(ue)}${oe}${z?" Relative":""}`;Q.push(te),Q.push("-".repeat(te.length));let me=[];for(let ie of W){let le=q.get(ie);if(le!==void 0)Q.push(`${le}:`);let fe=ee.get(ie);if(ie.kind==="skipped"){Q.push(`${(fe+ie.label).padEnd(G)} - skipped`);continue}let{run:be,label:ve,workload:We}=ie,we=be.timing,$e=Te(we.median),$n=we.p75??we.median,Rn=we.p99??we.max,Mn=ge(we.median,$e),Cn=`${ge($n,$e)}\u2026${ge(Rn,$e)}`,Tn=`${ge(we.min,$e)}\u2026${ge(we.max,$e)}`,Re=`${(fe+ve).padEnd(G)} ${Mn.padEnd(ae)} ${Cn.padEnd(pe)} ${Tn.padEnd(ue)}`;if(O){let ye=We?V.get(We.id):void 0,vn=ye!==void 0?et(ye):"";Re+=` ${vn.padEnd(se)}`}if(z){let ye=we.median/(ne.get(ie)??we.median);if(ye===1)Re+=We?.baseline?" 1.00\xD7 (baseline)":" 1.00\xD7";else if(ye>1)Re+=` ${ye.toFixed(2)}\xD7 slower`;else Re+=` ${(1/ye).toFixed(2)}\xD7 faster`}if(Q.push(Re),be.warnings.length>0)Q.push(`${" ".repeat(fe.length)} ! ${be.warnings.map((ye)=>ye.code).join(", ")}`),me.push(ie)}if(me.length>0){Q.push(""),Q.push("Warnings:");for(let ie of me)for(let le of ie.run.warnings)Q.push(` ${ie.label}: ${le.message}`)}let ce=nt(i,g);if(ce.length>0)Q.push(""),Q.push(...ce);let de=wn(i,g);if(de.length>0)Q.push(""),Q.push(...de);return{text:`${Q.map((ie)=>ie.trimEnd()).join(`
|
|
19
|
+
`)}
|
|
20
|
+
`}}};function wn(i,y){if(!i.comparisons||i.comparisons.length===0)return[];let g=[],_=new Map(i.measurements.map((C)=>[C.id,C]));for(let C of i.comparisons){let H=_.get(C.candidateMeasurementId),W=y.get(H?.workloadId??C.candidateMeasurementId),L=W?r(W):C.candidateMeasurementId,V=C.verdict==="pass"?"\u2713":"\u2717";if(g.push(`${V} ${L}`),C.timing){let O=(z)=>`${z>=0?"+":""}${z.toFixed(1)}%`;if(C.timing.ci95&&C.timing.pValue!==void 0){let z=C.timing.pValue<0.001?"p<0.001":`p=${C.timing.pValue.toFixed(3)}`;g.push(` timing: ${O(C.timing.medianDeltaPct)} median, 95% CI [${O(C.timing.ci95[0])}, ${O(C.timing.ci95[1])}], ${z} (${C.timing.verdict})`)}else g.push(` timing: ${O(C.timing.medianDeltaPct)} median (${C.timing.verdict})`)}if(C.frames)for(let O of C.frames.slice(0,xn)){if(Math.abs(O.deltaPct)<0.5)continue;let z=O.deltaPct>0?"+":"";g.push(` frame ${O.name}: ${z}${O.deltaPct.toFixed(1)}% self-time (${(O.baseSelfUs/1000).toFixed(2)}ms -> ${(O.candSelfUs/1000).toFixed(2)}ms)`)}if(C.heapTypes)for(let O of C.heapTypes.slice(0,kn)){if(Math.abs(O.deltaPct)<0.5)continue;let z=O.deltaPct>0?"+":"";g.push(` heap ${O.type}: ${z}${O.deltaPct.toFixed(1)}% count (${O.baseCount} -> ${O.candCount})`)}}return g}var xn=5,kn=5;function nt(i,y){let g=[];for(let _ of i.measurements){if(_.phase!=="cpu"&&_.phase!=="heap")continue;let C=y.get(_.workloadId),H=C?r(C):_.workloadId;if(_.phase==="cpu")if(_.cpu){g.push(`CPU capture - ${H} (instrumented, ${_.cpu.samplingIntervalUs}\xB5s interval, diagnostic wall ${Zn(_.diagnosticWallNs??0)}ms)`);let W=_.cpu.totals.reduce((L,V)=>L+V.selfUs,0)||1;for(let L of _.cpu.totals.slice(0,xn)){let V=_.cpu.frames[L.frameIx],O=(L.selfUs/W*100).toFixed(1);g.push(` ${O.padStart(5)}% ${(L.selfUs/1000).toFixed(2).padStart(8)}ms self ${V?.name??"?"}`)}}else g.push(`CPU capture - ${H} (instrumented, no evidence captured)`);else if(_.heap){let W=((_.heap.heapSizeBytes??0)/1e6).toFixed(2);g.push(`Heap snapshot - ${H} (instrumented, ${_.heap.objectCount??"?"} objects, ${W}MB)`);for(let L of _.heap.typeCounts.slice(0,kn))g.push(` ${String(L.count).padStart(6)} ${L.type}`)}else g.push(`Heap snapshot - ${H} (instrumented, no evidence captured)`);for(let W of _.artifacts)g.push(` artifact: ${W.path}`);for(let W of _.warnings)g.push(` ! ${W.message}`)}return g}var u={table:yn,json:sn,markdown:pn,jsonl:on,minimal:gn,collapsed:tn,mermaid:ln,speedscope:bn,cpuprofile:rn};function Z(i){return i}var _e=1000;async function D(i){let y=s({samples:i.samples??null,budgetMs:i.budgetMs??null,minSamples:i.minSamples??null,warmup:i.warmup??null,cpu:i.cpu??!1,heap:i.heap??!1,cpuIntervalUs:i.cpuIntervalUs??_e}),_=`${i.outDir??Ce}/artifacts`,C=i.noiseCheck===!1?void 0:w(),H=C?k(C):void 0,W=[],L=[],V=i.commands.map((q)=>{let re=typeof q==="string"||Array.isArray(q)?{command:q}:q,G=Array.isArray(re.command)?re.command:f(re.command),ae=re.prepare??i.prepare,pe=re.timeSource??i.timeSource,ue=h(G,re.label??(Array.isArray(re.command)?void 0:re.command),{prepare:ae,timeSource:pe});return{argv:G,workload:ue,prepare:ae,timeSource:pe}}),O=(i.interleave??!0)&&V.length>1,z=(q)=>({argv:q.argv,cwd:i.cwd,env:i.env,samples:i.samples,budgetMs:i.budgetMs,minSamples:i.minSamples,warmup:i.warmup,prepare:q.prepare,timeSource:q.timeSource}),ne=V.map((q)=>Ee(z(q))),ee=async(q)=>{let{argv:re,workload:G,prepare:ae}=V[q];W.push(G);let pe=ne[q].result(),ue=c({workload:G,configFingerprint:y,trials:pe.trials,timing:pe.timing,warnings:H&&L.length===0?[...pe.warnings,H]:pe.warnings,interleaved:O?!0:void 0});L.push(ue),L.push(...await tt({workload:G,argv:re,timingMeasurementId:ue.id,cfgFp:y,opts:i,artifactDir:_,prepare:ae}))};if(O){for(let re of ne)await re.warmup();let q=!0;while(q){q=!1;for(let re of ne)if(await re.step())q=!0}for(let re=0;re<V.length;re++)await ee(re)}else for(let q=0;q<V.length;q++)await Ae(ne[q]),await ee(q);return n(W,L,C)}async function tt({workload:i,argv:y,timingMeasurementId:g,cfgFp:_,opts:C,artifactDir:H,prepare:W}){let L=[],V=async(O)=>{if(W)await v(W,{phase:O,index:0},{cwd:C.cwd,env:C.env})};if(C.cpu){await V("cpu");let O=`${g}-cpu.cpuprofile`,z=await Le({argv:y,cwd:C.cwd,env:C.env,artifactDir:H,fileName:O,intervalUs:C.cpuIntervalUs??_e});L.push(await Pn({workload:i,phase:"cpu",configFingerprint:_,diagnosticWallNs:z.diagnosticWallNs,exitCode:z.exitCode,cpu:z.cpu,artifactPath:z.artifactPath,artifactKind:"cpuprofile",warnings:z.warnings}))}if(C.heap){await V("heap");let O=`${g}-heap.heapsnapshot`,z=await Ve({argv:y,cwd:C.cwd,env:C.env,artifactDir:H,fileName:O});L.push(await Pn({workload:i,phase:"heap",configFingerprint:_,diagnosticWallNs:z.diagnosticWallNs,exitCode:z.exitCode,heap:z.heap,artifactPath:z.artifactPath,artifactKind:"heapsnapshot",warnings:z.warnings}))}return L}async function Pn(i){let y=`${i.workload.id}-${i.phase}-${i.configFingerprint}`,g=i.artifactPath?[await j(y,i.artifactKind,i.artifactPath)]:[];return l({workload:i.workload,phase:i.phase,configFingerprint:i.configFingerprint,diagnosticWallNs:i.diagnosticWallNs,exitCode:i.exitCode,cpu:i.cpu,heap:i.heap,warnings:i.warnings,artifacts:g})}async function Y(i,y={}){let g=A(i),_=s({intervalUs:y.intervalUs??_e,origin:y.origin??"inspector"}),C=(L)=>L.samples?.nodeIds.length===0?[{code:"empty-profile",message:"In-process capture produced zero samples."}]:[],H=y.origin==="jsc"?await b(i,y):{...await ze(i,y),jit:void 0},W=l({workload:g,phase:"cpu",configFingerprint:_,diagnosticWallNs:H.diagnosticWallNs,cpu:H.cpu,jit:H.jit,warnings:C(H.cpu),artifacts:[]});return{result:H.result,measurement:W,document:n([g],[W])}}
|
|
21
|
+
export{x,M,I,a,P,S,N,B,m,U,p,r,K,X,u,Z,D,Y};
|
package/cli.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{
|
|
4
|
-
`)}
|
|
3
|
+
import{x,M,I,a,P,S,N,B,m,U,p,r,u,D}from"./chunk-ym89ds9x.js";import{e,f,g,n,h,c,s,i,t}from"./chunk-pesqame2.js";function z(l){return e("cache",l.workloadId,l.phase,l.configFingerprint,l.bunVersion,l.toolVersion,l.instrumented,l.inputsDigest??null)}async function K(l,o=process.cwd()){if(l.length===0)return;let d=await P(l,o),b=await Promise.all(d.map(async(w)=>{let k=await Bun.file(`${o}/${w}`).arrayBuffer();return{path:w,sha256:Bun.CryptoHasher.hash("sha256",k,"hex")}}));return e("inputs",b)}function X(l,o){return`${l}/cache/${o}.json`}async function Z(l,o){let d=Bun.file(X(l,o));if(!await d.exists())return;return await d.json()}async function Q(l,o,d){await Bun.write(X(l,o),`${JSON.stringify(d,null,2)}
|
|
4
|
+
`)}class q extends Error{path;constructor(l){super(`No baseline document at ${l}. Create one with: ostia time --export-json ${l} <command...>`);this.path=l}}async function H(l,o){let d=[];for(let b of l.workloads){if(b.suites){let A=await N(b.suites,process.cwd()),C=await m({suites:A,outDir:l.outDir,noiseCheck:!1,budgetMs:l.bench?.budgetMs,samples:l.bench?.samples,minSamples:l.bench?.minSamples,gc:l.bench?.gc,cpu:l.bench?.cpu,alloc:l.bench?.alloc,filter:l.bench?.filter,isolate:l.bench?.isolate,preload:l.bench?.preload,jobs:typeof l.bench?.jobs==="number"?l.bench.jobs:void 0});for(let T of C.workloads){let G=C.measurements.find((_)=>_.workloadId===T.id&&_.phase==="timing");if(!G)continue;d.push({workload:T,status:"executed",run:G})}continue}let w=h(b.command,b.label,{prepare:b.prepare,timeSource:b.timeSource}),k=await K(b.inputs??[]),y=s({runs:l.runs,warmup:l.warmup}),v=typeof b.prepare!=="function",O=z({workloadId:w.id,phase:"timing",configFingerprint:y,bunVersion:Bun.version,toolVersion:g,instrumented:!1,inputsDigest:k}),j=o||!v?void 0:await Z(l.outDir,O),R,F;if(j)R=j,F="cached";else{let A=await U({argv:b.command,samples:l.runs??void 0,warmup:l.warmup,prepare:b.prepare,timeSource:b.timeSource});if(R=c({workload:w,configFingerprint:y,trials:A.trials,timing:A.timing,warnings:A.warnings}),v)await Q(l.outDir,O,R);F="executed"}d.push({workload:w,status:F,run:R})}return d}async function Y(l){let{config:o}=l,d=a(o,l.baselineName);if(!await Bun.file(d).exists())throw new q(d);let w=await t(d),y=(await H(o,l.full)).map((C)=>({...C})),v=y.filter((C)=>C.status==="executed").length,O=y.length-v,j=n(y.map((C)=>C.workload),y.map((C)=>C.run)),R=0,F=0,A=0;for(let C of y){let T=M(w,j,C.workload.id,o.thresholds);if(!T){A++;continue}if(C.comparison=T,T.verdict==="pass")R++;else F++}return j.comparisons=y.map((C)=>C.comparison).filter((C)=>C!==void 0),{document:j,summary:{total:y.length,affected:v,cached:O,executed:v,passed:R,regressed:F,missingBaseline:A,results:y}}}function ee(l){let o=[];if(o.push(`${l.total} workloads`),o.push(`${l.affected} affected by this change`),o.push(`${l.cached} cached`),o.push(`${l.executed} executed`),l.missingBaseline>0)o.push(`${l.missingBaseline} skipped (no matching baseline workload)`);let d=l.results.filter((b)=>b.comparison?.verdict==="fail").map((b)=>{let w=b.comparison.timing,k=r(b.workload);return w?`${w.medianDeltaPct>0?"+":""}${w.medianDeltaPct.toFixed(1)}% median on ${k}`:k});return o.push(`${l.passed} passed ${l.regressed} regressed${d.length>0?` (${d.join(", ")})`:""}`),o.push(""),o.push(`Profile CI: ${l.regressed>0?"\u2717":"\u2713"}`),`${o.join(`
|
|
5
5
|
`)}
|
|
6
|
-
`}async function
|
|
7
|
-
`)}
|
|
8
|
-
|
|
9
|
-
`)}
|
|
6
|
+
`}async function te(l,o){let d=await H(l,!1),b=n(d.map((k)=>k.workload),d.map((k)=>k.run)),w=a(l,o);return await i(b,w),w}async function se(l){let o=[];try{let b=new Bun.Glob("*.json");for await(let w of b.scan({cwd:l.baselineDir,absolute:!1}))o.push(w.replace(/\.json$/,""))}catch{return[]}return o.sort(),(await Promise.all(o.map(async(b)=>{let w=a(l,b);try{let k=await t(w);return{name:b,path:w,createdAt:k.createdAt,toolVersion:k.toolVersion,bunVersion:k.bunVersion,workloads:k.workloads.length,...k.git!==void 0&&{git:k.git}}}catch{return}}))).filter((b)=>b!==void 0)}function E(l){return l instanceof Error?l.message:String(l)}function L(l){if(l in u)return!0;return process.stderr.write(`Unknown --format "${l}". Expected one of: ${Object.keys(u).join(", ")}
|
|
7
|
+
`),!1}async function V(l,o){if(o.exportJson)await i(l,o.exportJson);if(o.quiet)return;await oe(await u[o.format].render(l,{}))}async function W(l){let o=await I();if(!o){process.stderr.write(l?`No ostia.config.json found. "${l}" needs configured workloads.
|
|
8
|
+
`:`No ostia.config.json found.
|
|
9
|
+
`);return}if(l&&o.workloads.length===0){process.stderr.write(`ostia.config.json has no "workloads" configured.
|
|
10
|
+
`);return}return o}async function oe(l,o){if(l.text)process.stdout.write(l.text);if(!l.files||l.files.length===0)return;if(o)for(let d of l.files){let b=d.path?`${o}/${d.path}`:o;await Bun.write(b,d.content),process.stdout.write(`wrote ${b}
|
|
11
|
+
`)}else if(l.files.length===1)process.stdout.write(l.files[0].content);else for(let d of l.files)process.stdout.write(`--- ${d.path??"(unnamed)"} ---
|
|
12
|
+
${d.content}
|
|
13
|
+
`)}var le=`ostia time [flags] <command...>
|
|
10
14
|
|
|
11
15
|
Time one or more commands N times with warmup and report timing statistics.
|
|
12
16
|
|
|
@@ -56,7 +60,7 @@ Examples:
|
|
|
56
60
|
ostia time --time-source "built in (\\d+)ms" "bun build.ts"
|
|
57
61
|
ostia time --cpu --heap "bun src/server.ts"
|
|
58
62
|
ostia time --format json "bun a.ts"
|
|
59
|
-
`,
|
|
63
|
+
`,re=`ostia bench [flags] <suite.ts...>
|
|
60
64
|
|
|
61
65
|
Run in-process benchmark suites (registered via group()/task()). Each suite file runs
|
|
62
66
|
in its own spawned child process (isolated from CLI startup state).
|
|
@@ -180,7 +184,7 @@ Flags:
|
|
|
180
184
|
Examples:
|
|
181
185
|
ostia compare before.json after.json
|
|
182
186
|
ostia compare after.json --baseline .ostia/baselines/main.json
|
|
183
|
-
`,
|
|
187
|
+
`,ce=`ostia report <document.json> [flags]
|
|
184
188
|
|
|
185
189
|
Render a saved ProfileDocument. Files, not a GUI for the visualization formats -
|
|
186
190
|
hand the output to speedscope.app, flamegraph.pl, or a Mermaid renderer.
|
|
@@ -208,7 +212,7 @@ Examples:
|
|
|
208
212
|
ostia report doc.json --format markdown
|
|
209
213
|
ostia report doc.json --format speedscope --out-dir node_modules/.cache/ostia/viz
|
|
210
214
|
ostia report doc.json --format collapsed | flamegraph.pl > flame.svg
|
|
211
|
-
`,
|
|
215
|
+
`,ue=`ostia ci [--full] [--baseline NAME] [--save-baseline]
|
|
212
216
|
|
|
213
217
|
Load ostia.config.json, run configured workloads (reusing cached results when their
|
|
214
218
|
fingerprint is unchanged), compare against the named baseline, and gate on regressions.
|
|
@@ -224,7 +228,7 @@ Flags:
|
|
|
224
228
|
--help show this message
|
|
225
229
|
|
|
226
230
|
Exit codes: 0 pass, 1 regression, 2 harness error (missing config/baseline, spawn failure).
|
|
227
|
-
`,
|
|
231
|
+
`,J=`ostia baseline <save|list|show> [args]
|
|
228
232
|
|
|
229
233
|
Manage the baseline ProfileDocuments "ostia ci" gates against and "ostia compare --baseline"
|
|
230
234
|
reads.
|
|
@@ -243,33 +247,24 @@ Examples:
|
|
|
243
247
|
ostia baseline list
|
|
244
248
|
ostia baseline show main
|
|
245
249
|
ostia baseline show main --format markdown
|
|
246
|
-
`;function
|
|
247
|
-
`),2;if(
|
|
248
|
-
`),2;if(
|
|
249
|
-
`),2
|
|
250
|
-
`),2}
|
|
251
|
-
`),2
|
|
252
|
-
`),2
|
|
253
|
-
`),2
|
|
254
|
-
`)
|
|
255
|
-
`),2}let
|
|
256
|
-
`)}let D=await r[a.format].render(y,{});await q(D)}return g.some((S)=>S.verdict==="fail")?1:0}function xe(u){let a,f="table",d,h,k=!1;for(let g=0;g<u.length;g++){let y=u[g];switch(y){case"--format":f=u[++g]??"";break;case"--measurement":d=u[++g];break;case"--out-dir":h=u[++g];break;case"--help":case"-h":k=!0;break;default:a=y}}return{path:a,format:f,measurementId:d,outDir:h,help:k}}async function le(u){let a=xe(u);if(a.help||!a.path)return process.stdout.write(pe),a.help?0:2;if(!(a.format in r))return process.stderr.write(`Unknown --format "${a.format}". Expected one of: ${Object.keys(r).join(", ")}
|
|
257
|
-
`),2;let f;try{f=await t(a.path)}catch(k){return process.stderr.write(`Failed to load ${a.path}: ${k instanceof Error?k.message:String(k)}
|
|
258
|
-
`),2}let h=await r[a.format].render(f,{measurementId:a.measurementId});if(!h.text&&(!h.files||h.files.length===0))return process.stderr.write(a.measurementId?`No CPU evidence found for measurement "${a.measurementId}".
|
|
250
|
+
`;function me(l){let o={commands:[],prepare:[],interleave:!0,cpu:!1,heap:!1,noiseCheck:!0,format:"table",quiet:!1,help:!1};for(let d=0;d<l.length;d++){let b=l[d];switch(b){case"--samples":o.samples=Number(l[++d]);break;case"--budget":o.budgetMs=Number(l[++d]);break;case"--min-samples":o.minSamples=Number(l[++d]);break;case"--warmup":o.warmup=Number(l[++d]);break;case"--no-interleave":o.interleave=!1;break;case"--prepare":o.prepare.push(l[++d]??"");break;case"--time-source":o.timeSource=l[++d];break;case"--time-unit":o.timeUnit=l[++d];break;case"--cpu":o.cpu=!0;break;case"--heap":o.heap=!0;break;case"--cpu-interval":o.cpuIntervalUs=Number(l[++d]);break;case"--out-dir":o.outDir=l[++d];break;case"--no-noise-check":o.noiseCheck=!1;break;case"--export-json":o.exportJson=l[++d];break;case"--format":o.format=l[++d];break;case"--quiet":o.quiet=!0;break;case"--help":case"-h":o.help=!0;break;default:o.commands.push(b)}}return o}var ne=["ns","us","ms","s"];async function pe(l){let o=me(l);if(o.help||o.commands.length===0)return process.stdout.write(le),o.help?0:2;if(!L(o.format))return 2;if(o.prepare.length>1&&o.prepare.length!==o.commands.length)return process.stderr.write(`--prepare given ${o.prepare.length} times for ${o.commands.length} command(s): give it once (applies to all) or once per command.
|
|
251
|
+
`),2;if(o.timeUnit!==void 0&&!ne.includes(o.timeUnit))return process.stderr.write(`Unknown --time-unit "${o.timeUnit}". Expected one of: ${ne.join(", ")}
|
|
252
|
+
`),2;if(o.timeSource!==void 0)try{new RegExp(o.timeSource)}catch(y){return process.stderr.write(`Invalid --time-source regex: ${E(y)}
|
|
253
|
+
`),2}let d=o.timeSource!==void 0?{pattern:o.timeSource,unit:o.timeUnit}:void 0,b=o.commands.map((y,v)=>({command:y,prepare:o.prepare.length===1?o.prepare[0]:o.prepare[v]})),w;try{w=await D({commands:b,timeSource:d,samples:o.samples,budgetMs:o.budgetMs,minSamples:o.minSamples,warmup:o.warmup,interleave:o.interleave,cpu:o.cpu,heap:o.heap,cpuIntervalUs:o.cpuIntervalUs,outDir:o.outDir,noiseCheck:o.noiseCheck})}catch(y){return process.stderr.write(`Run failed: ${E(y)}
|
|
254
|
+
`),2}return await V(w,o),w.measurements.some((y)=>y.trials.some((v)=>v.exitCode!==void 0&&v.exitCode!==0))?1:0}function de(l){let o={suites:[],gc:!1,cpu:!1,alloc:!1,isolate:!1,preload:[],bunFlags:[],noiseCheck:!0,format:"table",quiet:!1,help:!1};for(let d=0;d<l.length;d++){let b=l[d];if(b==="--bun-flags"||b.startsWith("--bun-flags=")){let w=b.startsWith("--bun-flags=")?b.slice(12):l[++d]??"";o.bunFlags.push(...f(w));continue}switch(b){case"--budget":o.budgetMs=Number(l[++d]);break;case"--samples":o.samples=Number(l[++d]);break;case"--min-samples":o.minSamples=Number(l[++d]);break;case"--jobs":{let w=l[++d];o.jobs=w==="auto"?S():Number(w);break}case"--gc":o.gc=!0;break;case"--cpu":o.cpu=!0;break;case"--alloc":o.alloc=!0;break;case"--filter":o.filter=l[++d];break;case"--isolate":o.isolate=!0;break;case"--preload":o.preload.push(l[++d]);break;case"--out-dir":o.outDir=l[++d];break;case"--no-noise-check":o.noiseCheck=!1;break;case"--export-json":o.exportJson=l[++d];break;case"--format":o.format=l[++d];break;case"--quiet":o.quiet=!0;break;case"--help":case"-h":o.help=!0;break;default:o.suites.push(b)}}return o}async function fe(l){let o=de(l);if(o.help)return process.stdout.write(re),0;if(!L(o.format))return 2;let d=await I(),b=await B(o,d?.bench);if(b.suites.length===0)return process.stdout.write(re),2;if(b.jobs!==void 0&&!(b.jobs>=1))return process.stderr.write(`--jobs expects a positive integer or "auto".
|
|
255
|
+
`),2;let w;try{w=await m(b)}catch(k){return process.stderr.write(`Bench failed: ${E(k)}
|
|
256
|
+
`),2}return await V(w,o),0}function he(l){let o={paths:[],format:"table",quiet:!1,help:!1};for(let d=0;d<l.length;d++){let b=l[d];switch(b){case"--baseline":o.baseline=l[++d];break;case"--export-json":o.exportJson=l[++d];break;case"--format":o.format=l[++d];break;case"--quiet":o.quiet=!0;break;case"--help":case"-h":o.help=!0;break;default:o.paths.push(b)}}return o}async function be(l){let o=he(l);if(o.help)return process.stdout.write(ae),0;let d,b;if(o.baseline)d=o.baseline,b=o.paths[0];else d=o.paths[0],b=o.paths[1];if(!d||!b)return process.stdout.write(ae),2;let w,k;try{[w,k]=await Promise.all([t(d),t(b)])}catch(j){return process.stderr.write(`Failed to load documents: ${E(j)}
|
|
257
|
+
`),2}let y=x(w,k),v={...k,comparisons:y};if(!o.quiet&&w.git&&k.git)process.stdout.write(`base ${p(w.git)} \u2192 cand ${p(k.git)}
|
|
258
|
+
`);return await V(v,o),y.some((j)=>j.verdict==="fail")?1:0}function ge(l){let o={format:"table",help:!1};for(let d=0;d<l.length;d++){let b=l[d];switch(b){case"--format":o.format=l[++d]??"";break;case"--measurement":o.measurementId=l[++d];break;case"--out-dir":o.outDir=l[++d];break;case"--help":case"-h":o.help=!0;break;default:o.path=b}}return o}async function ie(l){let o=ge(l);if(o.help||!o.path)return process.stdout.write(ce),o.help?0:2;if(!L(o.format))return 2;let d;try{d=await t(o.path)}catch(k){return process.stderr.write(`Failed to load ${o.path}: ${E(k)}
|
|
259
|
+
`),2}let w=await u[o.format].render(d,{measurementId:o.measurementId});if(!w.text&&(!w.files||w.files.length===0))return process.stderr.write(o.measurementId?`No CPU evidence found for measurement "${o.measurementId}".
|
|
259
260
|
`:`No CPU evidence found in this document (no cpu-phase measurements). Capture some with "ostia time --cpu ...".
|
|
260
|
-
`),2;return await
|
|
261
|
-
`),2;
|
|
262
|
-
`),2
|
|
263
|
-
`),2;return process.
|
|
264
|
-
`),
|
|
265
|
-
`),2;if(
|
|
266
|
-
`),2
|
|
267
|
-
`),0}async function ve(u){if(u.includes("--help")||u.includes("-h"))return process.stdout.write(_),0;let a=await O();if(!a)return process.stderr.write(`No ostia.config.json found.
|
|
268
|
-
`),2;let f=await re(a);if(f.length===0)return process.stdout.write(`No baselines found in ${a.baselineDir}.
|
|
269
|
-
`),0;for(let d of f){let h=d.git?` ${d.git.sha} (${d.git.branch}${d.git.dirty?", dirty":""})`:"";process.stdout.write(`${d.name} ${d.workloads} workloads created ${d.createdAt} toolVersion ${d.toolVersion}${h}
|
|
270
|
-
`)}return 0}async function $e(u){let[a,...f]=u;if(!a||a==="--help"||a==="-h")return process.stdout.write(_),a?0:2;let d=await O();if(!d)return process.stderr.write(`No ostia.config.json found.
|
|
271
|
-
`),2;return le([U(d,a),...f])}async function Se(u){let[a,...f]=u;switch(a){case"save":return je(f);case"list":return ve(f);case"show":return $e(f);case void 0:case"--help":case"-h":return process.stdout.write(_),a===void 0?2:0;default:return process.stderr.write(`Unknown "ostia baseline ${a}". Run "ostia baseline --help".
|
|
272
|
-
`),2}}async function De(){let[u,...a]=process.argv.slice(2);switch(u){case"time":return be(a);case"bench":return we(a);case"compare":return ye(a);case"report":return le(a);case"ci":return Pe(a);case"baseline":return Se(a);case void 0:case"--help":case"-h":return process.stdout.write(`ostia - Bun-native profile IR engine
|
|
261
|
+
`),2;return await oe(w,o.outDir),0}function we(l){let o={full:!1,saveBaseline:!1,quiet:!1,help:!1};for(let d=0;d<l.length;d++)switch(l[d]){case"--full":o.full=!0;break;case"--baseline":o.baseline=l[++d];break;case"--save-baseline":o.saveBaseline=!0;break;case"--export-json":o.exportJson=l[++d];break;case"--quiet":o.quiet=!0;break;case"--help":case"-h":o.help=!0;break}return o}async function ke(l){let o=we(l);if(o.help)return process.stdout.write(ue),0;let d=await W("ostia ci");if(!d)return 2;let b;try{b=await Y({config:d,full:o.full,baselineName:o.baseline})}catch(w){if(w instanceof q)return process.stderr.write(`${w.message}
|
|
262
|
+
`),2;return process.stderr.write(`CI run failed: ${E(w)}
|
|
263
|
+
`),2}if(o.exportJson)await i(b.document,o.exportJson);if(o.saveBaseline&&b.summary.regressed===0)await i(b.document,a(d,o.baseline));if(!o.quiet)process.stdout.write(ee(b.summary));return b.summary.regressed>0?1:0}async function ye(l){if(l.includes("--help")||l.includes("-h"))return process.stdout.write(J),0;let o=l[0],d=await W("ostia baseline save");if(!d)return 2;let b=await te(d,o);return process.stdout.write(`Wrote ${b}
|
|
264
|
+
`),0}async function Ce(l){if(l.includes("--help")||l.includes("-h"))return process.stdout.write(J),0;let o=await W();if(!o)return 2;let d=await se(o);if(d.length===0)return process.stdout.write(`No baselines found in ${o.baselineDir}.
|
|
265
|
+
`),0;for(let b of d){let w=b.git?` ${p(b.git)}`:"";process.stdout.write(`${b.name} ${b.workloads} workloads created ${b.createdAt} toolVersion ${b.toolVersion}${w}
|
|
266
|
+
`)}return 0}async function xe(l){let[o,...d]=l;if(!o||o==="--help"||o==="-h")return process.stdout.write(J),o?0:2;let b=await W();if(!b)return 2;return ie([a(b,o),...d])}async function Pe(l){let[o,...d]=l;switch(o){case"save":return ye(d);case"list":return Ce(d);case"show":return xe(d);case void 0:case"--help":case"-h":return process.stdout.write(J),o===void 0?2:0;default:return process.stderr.write(`Unknown "ostia baseline ${o}". Run "ostia baseline --help".
|
|
267
|
+
`),2}}async function ve(){let[l,...o]=process.argv.slice(2);switch(l){case"time":return pe(o);case"bench":return fe(o);case"compare":return be(o);case"report":return ie(o);case"ci":return ke(o);case"baseline":return Pe(o);case void 0:case"--help":case"-h":return process.stdout.write(`ostia - Bun-native profile IR engine
|
|
273
268
|
|
|
274
269
|
Commands:
|
|
275
270
|
time Time commands N times and report timing/CPU/heap
|
|
@@ -280,5 +275,5 @@ Commands:
|
|
|
280
275
|
baseline Manage baseline ProfileDocuments (save/list/show)
|
|
281
276
|
|
|
282
277
|
Run "ostia <command> --help" for details.
|
|
283
|
-
`),
|
|
284
|
-
`),2}}if(import.meta.main)
|
|
278
|
+
`),l===void 0?2:0;default:return process.stderr.write(`Unknown subcommand "${l}". Run "ostia --help".
|
|
279
|
+
`),2}}if(import.meta.main)ve().then((l)=>process.exit(l));
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare function defineConfig(config:
|
|
1
|
+
export declare function defineConfig(config: OstiaConfigInput): OstiaConfigInput;
|
|
2
2
|
|
|
3
3
|
export interface CommandSpec {
|
|
4
4
|
command: string | string[];
|
|
@@ -113,6 +113,10 @@ export interface OstiaConfig {
|
|
|
113
113
|
bench?: BenchConfig;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
export type OstiaConfigInput = Omit<Partial<OstiaConfig>, "thresholds"> & {
|
|
117
|
+
thresholds?: Partial<Thresholds>;
|
|
118
|
+
};
|
|
119
|
+
|
|
116
120
|
interface Thresholds {
|
|
117
121
|
timingPct: number;
|
|
118
122
|
frameSelfPct: number;
|
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{x,m,K,X,u,Z,D,Y}from"./chunk-ym89ds9x.js";import{n,i,t,C,Q,ee}from"./chunk-pesqame2.js";export{m as bench,x as compareDocuments,n as createDocument,Z as defineConfig,Q as group,C as keep,t as loadDocument,Y as profile,K as range,u as renderers,i as saveDocument,X as sweep,ee as task,D as time};
|
package/package.json
CHANGED
package/runner.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{n,
|
|
4
|
-
`),2;let t=
|
|
5
|
-
`),2;let
|
|
6
|
-
`);let
|
|
7
|
-
`),2;if(t.planPath){let r=
|
|
3
|
+
import{n,W,c,l,s,i,b,w,k,_,L,H,y,O,G,V,z,q}from"./chunk-pesqame2.js";import{heapStats as Z}from"bun:jsc";var K=100;function E(){try{return Z().heapSize}catch{return process.memoryUsage().heapUsed}}async function J(p,m=K){let d=Bun.nanoseconds();Bun.gc(!0);let t=E();for(let u=0;u<m;u++){let o=p();if(o instanceof Promise)await o}Bun.gc(!0);let f=E(),a=Bun.nanoseconds()-d;return{memory:{origin:"heapStats",bytesPerOp:Math.max(0,(f-t)/m)},diagnosticWallNs:a}}var Q=200,X=20;async function A(p,m=Q){let d=m*1e6,t=async()=>{let o=Bun.nanoseconds();while(Bun.nanoseconds()-o<d){let g=p();if(g instanceof Promise)await g}},{cpu:f,jit:a,diagnosticWallNs:u}=await b(t);return{cpu:f,jit:a,diagnosticWallNs:u}}function j(p){let{llint:m,baseline:d,dfg:t,ftl:f}=p.tiers,a=m+d+t+f;if(a===0)return;let u=m/a*100,o=d/a*100,g=t/a*100,S=f/a*100;if(u+o<=X)return;return{code:"jit-cold",message:`${(u+o).toFixed(1)}% of CPU samples were in the llint/baseline tiers: the JIT never warmed this task up.`,data:{llintPct:u,baselinePct:o,dfgPct:g,ftlPct:S}}}async function Y(){let[p,m,d]=process.argv.slice(2);if(!p||!m)return process.stderr.write(`bench runner: usage: runner.ts <suiteFile> <outputPath> [optsJson]
|
|
4
|
+
`),2;let t=d?JSON.parse(d):{};for(let r of t.preload??[])await import(r);H(),await import(p);let f=L();if(f.length===0)return process.stderr.write(`bench runner: ${p} registered no tasks (no task() calls found).
|
|
5
|
+
`),2;let a=f.filter((r)=>r.only),u=a.length>0?a:f;if(a.length>0)process.stderr.write(`bench: ${a.length} task(s) selected by .only
|
|
6
|
+
`);let o=q(u,t.filter);if(t.taskIds){let r=new Set(t.taskIds);o=o.filter((e)=>r.has(y(e)))}if(o.length===0)return process.stderr.write(`bench runner: --filter ${JSON.stringify(t.filter)} matched zero of ${u.length} registered task(s) in ${p}.
|
|
7
|
+
`),2;if(t.planPath){let r=o.map((e)=>({id:y(e),isolate:O(e,t.isolate??!1)}));await Bun.write(t.planPath,JSON.stringify({tasks:r}))}let g=t.taskIds?o:o.filter((r)=>!O(r,t.isolate??!1)),I=g.some((r)=>!r.skipped)&&t.noiseCheck!==!1?w():void 0,B=I?k(I):void 0,M=new Map,x=new Map;g.forEach((r,e)=>{if(r.groupName===void 0||r.skipped)return;if(!M.has(r.groupName))M.set(r.groupName,e);x.set(r.groupName,e)});let F=[],P=[];for(let r=0;r<g.length;r++){let e=g[r],R=y(e),T=W(p,R,{label:R,baseline:e.baseline,group:e.groupName,description:e.opts?.description,groupDescription:e.groupDescription,isolated:t.markIsolated,params:e.params,skipped:e.skipped});if(F.push(T),e.skipped)continue;let D=e.groupName!==void 0&&M.get(e.groupName)===r,U=e.groupName!==void 0&&x.get(e.groupName)===r;if(D&&e.groupBefore)await e.groupBefore();if(e.opts?.before)await e.opts.before();let N={budgetMs:e.opts?.budgetMs??t.budgetMs,samples:e.opts?.samples??t.samples,minSamples:e.opts?.minSamples??t.minSamples,warmup:t.warmup,gc:G(e,t.gc??!1)},C=await _(e.fn,N);if(P.push(c({workload:T,configFingerprint:s({budgetMs:N.budgetMs??null,samples:N.samples??null,minSamples:N.minSamples??null,gc:N.gc??!1}),trials:C.trials,timing:C.timing,warnings:B&&P.length===0?[...C.warnings,B]:C.warnings})),V(e,t.cpu??!1)){let h=await A(e.fn),v=j(h.jit);P.push(l({workload:T,phase:"cpu",configFingerprint:s({cpu:!0}),diagnosticWallNs:h.diagnosticWallNs,cpu:h.cpu,jit:h.jit,warnings:v?[v]:[],artifacts:[]}))}if(z(e,t.alloc??!1)){let h=await J(e.fn);P.push(l({workload:T,phase:"memstats",configFingerprint:s({alloc:!0}),diagnosticWallNs:h.diagnosticWallNs,memory:h.memory,warnings:[],artifacts:[]}))}if(e.opts?.after)await e.opts.after();if(U&&e.groupAfter)await e.groupAfter()}return await i(n(F,P,I),m),0}Y().then((p)=>process.exit(p));
|
package/chunk-9dqf5cxf.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
var De={ns:1,us:1000,ms:1e6,s:1e9};async function D(r){let c=r.timeSource!==void 0,l=Bun.nanoseconds(),b=Bun.spawn(r.argv,{cwd:r.cwd,env:r.env,stdout:c?"pipe":"ignore",stderr:c?"pipe":"ignore",stdin:"ignore"}),R=c?Promise.all([new Response(b.stdout).text(),new Response(b.stderr).text()]):void 0,M=await b.exited,N=Bun.nanoseconds(),C=b.resourceUsage?.(),G={wallNs:N-l,exitCode:M,userNs:C?Number(C.cpuTime.user)*1000:void 0,systemNs:C?Number(C.cpuTime.system)*1000:void 0,maxRssBytes:C?.maxRSS};if(R&&r.timeSource){let[V,ee]=await R;G.reportedNs=_e(r.timeSource,V,ee,r.argv)}return G}function _e(r,c,l,b=[]){let R=typeof r.pattern==="string"?new RegExp(r.pattern):r.pattern,M=r.group??1,N=R.exec(c)??R.exec(l),C=b.length>0?` for "${b.join(" ")}"`:"";if(!N)throw Error(`timeSource pattern ${R} did not match the output${C}. Output was:
|
|
3
|
-
${$e(c,l)}`);let G=N[M];if(G===void 0)throw Error(`timeSource pattern ${R} matched${C} but has no capture group ${M} (matched text: "${N[0]}").`);let V=Number(G);if(!Number.isFinite(V))throw Error(`timeSource pattern ${R} group ${M} captured "${G}"${C}, which is not a number.`);return V*De[r.unit??"ms"]}function $e(r,c){let b=(M)=>M.length>800?`${M.slice(0,800)}\u2026(${M.length-800} more)`:M,R=[];if(r.trim())R.push(`--- stdout ---
|
|
4
|
-
${b(r.trimEnd())}`);if(c.trim())R.push(`--- stderr ---
|
|
5
|
-
${b(c.trimEnd())}`);return R.length>0?R.join(`
|
|
6
|
-
`):"(empty)"}async function k(r,c,l){if(typeof r==="function"){await r(c);return}let b=Array.isArray(r)?r:y(r),M=await Bun.spawn(b,{cwd:l.cwd,env:l.env,stdout:"ignore",stderr:"inherit",stdin:"ignore"}).exited;if(M!==0)throw Error(`prepare command "${b.join(" ")}" exited with code ${M} before ${c.phase} trial ${c.index}.`)}function Re(r){if(r===void 0||typeof r==="function")return;return Array.isArray(r)?r:y(r)}function Me(r){if(r===void 0)return;return{pattern:typeof r.pattern==="string"?r.pattern:r.pattern.source,...r.group!==void 0&&{group:r.group},...r.unit!==void 0&&{unit:r.unit}}}function y(r){return r.trim().split(/\s+/).filter(Boolean)}function x(r){return JSON.stringify(ge(r))}function ge(r){if(Array.isArray(r))return r.map(ge);if(r!==null&&typeof r==="object"){let c={};for(let l of Object.keys(r).sort())c[l]=ge(r[l]);return c}return r}function e(r,...c){let l=Bun.CryptoHasher.hash("sha256",x(c),"hex");return`${r}_${l.slice(0,16)}`}var be,Se=!1;function ke(r){let c=Bun.spawnSync(["git",...r],{timeout:200,stdout:"pipe",stderr:"ignore"});return c.success?c.stdout.toString().trim():void 0}function ve(){if(Se)return be;Se=!0;try{let r=ke(["rev-parse","--short","HEAD"]);if(r===void 0)be=void 0;else{let c=ke(["rev-parse","--abbrev-ref","HEAD"]),l=ke(["status","--porcelain"]);be={sha:r,branch:c??"HEAD",dirty:(l?.length??0)>0}}}catch{be=void 0}return be}var m="0.1.0";function n(r,c,l){let b=ve();return{schemaVersion:2,toolVersion:m,bunVersion:Bun.version,platform:{os:process.platform,arch:process.arch},createdAt:new Date().toISOString(),workloads:r,measurements:c,...l!==void 0&&{environment:l},...b!==void 0&&{git:b}}}function p(r,c,l={}){let b=Re(l.prepare),R=Me(l.timeSource),M=typeof l.prepare==="function"?l.prepare.toString():b;return{id:e("wl","subprocess",r,process.cwd(),...M!==void 0||R!==void 0?[M??null,R??null]:[]),kind:"subprocess",command:r,label:c,...b!==void 0&&{prepare:b},...R!==void 0&&{timeSource:R}}}function F(r,c){return{id:e("wl","inprocess",r.name,r.toString()),kind:"inprocess",label:c}}function O(r,c,l={}){return{id:l.params!==void 0?e("wl","inprocess-entry",r,c,l.params):e("wl","inprocess-entry",r,c),kind:"inprocess",entry:{file:r,task:c,...l.group!==void 0&&{group:l.group}},...l.label!==void 0&&{label:l.label},...l.baseline!==void 0&&{baseline:l.baseline},...l.description!==void 0&&{description:l.description},...l.groupDescription!==void 0&&{groupDescription:l.groupDescription},...l.isolated!==void 0&&{isolated:l.isolated},...l.params!==void 0&&{params:l.params},...l.skipped!==void 0&&{skipped:l.skipped}}}function i(r){return{id:e("run",r.workload.id,"timing",r.configFingerprint,Bun.version,m),workloadId:r.workload.id,phase:"timing",instrumented:!1,configFingerprint:r.configFingerprint,trials:r.trials,timing:r.timing,warnings:r.warnings,artifacts:[],memory:Ce(r.trials),...r.interleaved!==void 0&&{interleaved:r.interleaved}}}function Ce(r){let c=r.map((l)=>l.maxRssBytes).filter((l)=>l!==void 0);if(c.length===0)return;return{origin:"resourceUsage",perTrial:r.map((l)=>({rssBytes:l.maxRssBytes})),maxRssBytes:Math.max(...c)}}function a(r){return{id:e("run",r.workload.id,r.phase,r.configFingerprint,Bun.version,m),workloadId:r.workload.id,phase:r.phase,instrumented:!0,configFingerprint:r.configFingerprint,trials:[{i:0,wallNs:r.diagnosticWallNs,exitCode:r.exitCode}],diagnosticWallNs:r.diagnosticWallNs,cpu:r.cpu,heap:r.heap,memory:r.memory,jit:r.jit,warnings:r.warnings,artifacts:r.artifacts}}async function E(r,c,l){let R=await Bun.file(l).arrayBuffer(),M=new Bun.CryptoHasher("sha256");return M.update(R),{id:e("art",r,c,l),kind:c,path:l,sha256:M.digest("hex"),bytes:R.byteLength}}function o(r){return e("cfg",r)}function S(r){return`${JSON.stringify(ge(r),null,2)}
|
|
7
|
-
`}async function s(r,c){await Bun.write(c,S(r))}function We(r){if(r.schemaVersion===2)return r;let{runs:c,comparisons:l,...b}=r;return{...b,schemaVersion:2,measurements:c.map(({baselineRunId:R,...M})=>({...M,...R!==void 0&&{baselineMeasurementId:R}})),...l!==void 0&&{comparisons:l.map(({baselineRunId:R,candidateRunId:M,...N})=>({...N,baselineMeasurementId:R,candidateMeasurementId:M}))}}}async function t(r){let c=await Bun.file(r).text(),l=JSON.parse(c);return We(l)}import{profile as Le}from"bun:jsc";var Ge=new Map([["LLInt","llint"],["Baseline","baseline"],["DFG","dfg"],["FTL","ftl"]]),Ie=4294967295;function Ne(r,c){let l=c??r.interval*1e6,b=new Map,R=[];function M(w,v,J,ne){let re=b.get(w);if(re===void 0)re=new Map,b.set(w,re);let Y=v??"",se=re.get(Y);if(se===void 0)se=R.length,re.set(Y,se),R.push({key:e("fr",w,Y),name:w,url:v,line:J,col:ne});return se}function N(w){let v=w.line===Ie,J=v?void 0:w.line-1,ne=v||w.column===Ie?void 0:w.column-1;return M(w.name,w.sourceURL,J,ne)}let C=M("(root)",void 0,void 0,void 0),G=1,V={id:0,frameIx:C,children:new Map,selfUs:0,samples:0,totalUs:0},ee=new Map([[0,V]]),te={llint:0,baseline:0,dfg:0,ftl:0},X=new Map,me=[],ae=[];for(let w of r.traces){let v=w.frames,J=V;for(let Y=v.length-1;Y>=0;Y--){let se=N(v[Y]),pe=J.children.get(se);if(!pe)pe={id:G++,frameIx:se,children:new Map,selfUs:0,samples:0,totalUs:0},J.children.set(se,pe),ee.set(pe.id,pe);J=pe}J.selfUs+=l,J.samples+=1,me.push(J.id),ae.push(l);let ne=v[0],re=ne&&Ge.get(ne.category);if(re){te[re]++;let Y=X.get(re)??new Map;Y.set(J.frameIx,(Y.get(J.frameIx)??0)+1),X.set(re,Y)}}function oe(w){let v=w.selfUs;for(let J of w.children.values())v+=oe(J);return w.totalUs=v,v}oe(V);let ue=new Map;function ie(w){let v=ue.get(w.frameIx);if(v)v.selfUs+=w.selfUs,v.totalUs+=w.totalUs,v.samples+=w.samples;else ue.set(w.frameIx,{frameIx:w.frameIx,selfUs:w.selfUs,totalUs:w.totalUs,samples:w.samples});for(let J of w.children.values())ie(J)}ie(V);let ce=[...ee.values()].map((w)=>({id:w.id,frameIx:w.frameIx,children:[...w.children.values()].map((v)=>v.id)})),le={origin:"jsc-profile",samplingIntervalUs:l,frames:R,nodes:ce,totals:[...ue.values()].sort((w,v)=>v.selfUs-w.selfUs),samples:{nodeIds:me,timeDeltasUs:ae}},z=[...X.entries()].flatMap(([w,v])=>[...v.entries()].sort((J,ne)=>ne[1]-J[1]).slice(0,3).map(([J,ne])=>({tier:w,frameKey:R[J].key,samples:ne})));return{cpu:le,jit:{origin:"jsc-profile",tiers:te,topFramesByTier:z}}}var He=1000;async function d(r,c={}){let l=c.intervalUs??He,b,R=Bun.nanoseconds(),M=await Le(async()=>(b=await r(),b),l),N=Bun.nanoseconds()-R,{cpu:C,jit:G}=Ne(M.stackTraces,l);return{result:b,cpu:C,jit:G,diagnosticWallNs:N}}import Te from"os";function u(r){if(r.length===0)throw Error("computeTimingStats: samples must be non-empty");let c=r.length,l=Ee(r),b=0;for(let w=0;w<c;w++)b+=r[w];let R=b/c,M=de(l,0.5),N=0;for(let w=0;w<c;w++){let v=r[w]-R;N+=v*v}let C=Math.sqrt(N/c),G=l[0],V=l[c-1],ee=de(l,0.25),te=de(l,0.75),X=te-ee,me=ee-1.5*X,ae=te+1.5*X,oe=ee-3*X,ue=te+3*X,ie=0,ce=0;for(let w=0;w<c;w++){let v=r[w];if(v<oe||v>ue)ce++;else if(v<me||v>ae)ie++}let le=de(l,0.99),z=new Float64Array(c);for(let w=0;w<c;w++)z[w]=Math.abs(r[w]-M);z.sort();let Q=de(z,0.5);return{unit:"ns",samples:r,mean:R,median:M,stddev:C,min:G,max:V,outliers:{mild:ie,severe:ce},p75:te,p99:le,mad:Q}}function Ee(r){let c=new Float64Array(r.length);return c.set(r),c.sort(),c}function de(r,c){let l=r.length;if(l===1)return r[0];let b=c*(l-1),R=Math.floor(b),M=Math.ceil(b);if(R===M)return r[R];let N=b-R;return r[R]*(1-N)+r[M]*N}var Je=5000000,je=200;function P(r,c,l="subprocess"){let b=[],R=r.samples[0];if(R!==void 0){let N=Ee(r.samples),C=de(N,0.25),V=de(N,0.75)-C;if(R>r.median+3*V&&V>0)b.push({code:"slow-first-run",message:`First run took ${(R/1e6).toFixed(2)}ms, much slower than the median ${(r.median/1e6).toFixed(2)}ms. Consider more warmup.`,data:{firstNs:R,medianNs:r.median}})}if(r.outliers.mild+r.outliers.severe>0)b.push({code:"outliers-detected",message:`${r.outliers.mild+r.outliers.severe} outlier(s) detected (${r.outliers.severe} severe, ${r.outliers.mild} mild).`,data:r.outliers});if(l==="subprocess"&&r.median<Je)b.push({code:"fast-command",message:`Median run time (${(r.median/1e6).toFixed(3)}ms) is very fast; results may be dominated by spawn overhead.`,data:{medianNs:r.median}});if(l==="inprocess"&&r.median<je)b.push({code:"below-timer-resolution",message:`Median run time (${r.median.toFixed(0)}ns) is close to timer resolution; consider a larger batch size or a coarser operation.`,data:{medianNs:r.median}});let M=c.filter((N)=>N!==void 0&&N!==0);if(M.length>0)b.push({code:"nonzero-exit",message:`${M.length} of ${c.length} trial(s) exited non-zero.`,data:{exitCodes:M}});return b}var Ve=200,Fe=64,qe=(()=>{let r=new Uint8Array(4096);for(let c=0;c<r.length;c++)r[c]=c*2654435761&255;return r})();function ze(r,c){let l=c;for(let b=0;b<r.length;b++)l^=r[b],l=Math.imul(l,16777619);return l>>>0}function Ke(r){let c=u(r),l=c.mad??0;return{floorPct:c.median===0?0:l/c.median*100,referenceMedianNs:c.median,samples:r.length}}function Be(r=Ve){let c=r*1e6,l=[],b=0,R=Bun.nanoseconds(),M=0;while(M<c){let N=Bun.nanoseconds();for(let G=0;G<Fe;G++)b^=ze(qe,G);let C=Bun.nanoseconds();l.push((C-N)/Fe),M=Bun.nanoseconds()-R}return Ke(l)}var Xe=0.75;function f(){let[r=0,c=0]=Te.loadavg();return{cpuModel:Te.cpus()[0]?.model??"unknown",cores:Te.availableParallelism(),loadAvg1:r,loadAvg5:c,noise:Be()}}function g(r){if(r.loadAvg1<=r.cores*Xe)return;return{code:"noisy-machine",message:`Load average ${r.loadAvg1.toFixed(2)} exceeds 75% of ${r.cores} available core(s); timing noise may be elevated.`,data:{loadAvg1:r.loadAvg1,cores:r.cores}}}var Ze=500,Qe=20,Oe=3,Ye=10,en=2,nn=0.1,rn=1000,tn=1e4;function Ue(r){let c=Math.log10(Math.max(1,r)/1e6),l=Math.round(Oe+en*c);return Math.min(Ye,Math.max(Oe,l))}function on(r,c){let l=Math.floor(c/r);return Math.min(Qe,Math.max(l,Ue(r)))}var Pe=0;function T(r){if(typeof r==="number")Pe+=r;else if(r!==void 0&&r!==null)Pe+=1}function we(r){return r!==null&&typeof r==="object"&&typeof r.then==="function"}function Ae(r,c){return Math.max(1,Math.ceil(rn/r),Math.ceil(c/(r*tn)))}async function U(r,c={}){let l=(c.budgetMs??Ze)*1e6,b=l*(c.warmup??nn),R=Bun.nanoseconds(),M=0,N=0;while(N<b){let z=r();T(we(z)?await z:z),M++,N=Bun.nanoseconds()-R}let C;if(M>0)C=Math.max(1,N/M);else{let z=Bun.nanoseconds(),Q=r();T(we(Q)?await Q:Q),C=Math.max(1,Bun.nanoseconds()-z)}let G=Ae(C,l);if(G>1){let z=Bun.nanoseconds();for(let Q=0;Q<G;Q++){let w=r();T(we(w)?await w:w)}C=Math.max(1,(Bun.nanoseconds()-z)/G),G=Ae(C,l)}let V=C*G,ee=c.samples??c.minSamples??on(V,l),te=c.samples!==void 0?0:l,X=[],me=Bun.nanoseconds(),ae=0,oe=0;while(oe<ee||ae<te){let z=Bun.nanoseconds();for(let w=0;w<G;w++){let v=r();T(we(v)?await v:v)}let Q=Bun.nanoseconds();if(X.push({i:oe,wallNs:(Q-z)/G}),oe++,ae=Bun.nanoseconds()-me,c.gc)Bun.gc(!0);if(c.samples!==void 0&&oe>=c.samples)break}let ue=X.map((z)=>z.wallNs),ie=u(ue),ce=P(ie,[],"inprocess"),le=Ue(V);if(X.length<le)ce.push({code:"low-sample-count",message:`Only ${X.length} sample(s) at ~${sn(V)} per trial; ${le} is the floor for this cost class. Raise minSamples or the time budget for a steadier number.`,data:{samples:X.length,target:le,trialCostNs:V}});return{trials:X,timing:ie,warnings:ce}}function sn(r){if(r>=1e9)return`${(r/1e9).toFixed(2)}s`;if(r>=1e6)return`${(r/1e6).toFixed(1)}ms`;if(r>=1000)return`${(r/1000).toFixed(1)}\xB5s`;return`${r.toFixed(0)}ns`}var ye=[],Z,fe;function xe(r,c,l,b){let R=Z;Z={name:r,description:l?.description,isolate:l?.isolate,gc:l?.gc,cpu:l?.cpu,alloc:l?.alloc,before:l?.before,after:l?.after,skip:b.skip,only:b.only};try{c()}finally{Z=R}}var q=Object.assign((r,c,l)=>xe(r,c,l,{}),{skip:(r,c,l)=>xe(r,c,l,{skip:!0}),only:(r,c,l)=>xe(r,c,l,{only:!0})});function he(r,c,l,b){let R=fe!==void 0||l?.params!==void 0?{...fe,...l?.params}:void 0;ye.push({groupName:Z?.name,groupDescription:Z?.description,groupIsolate:Z?.isolate,groupGc:Z?.gc,groupCpu:Z?.cpu,groupAlloc:Z?.alloc,groupBefore:Z?.before,groupAfter:Z?.after,name:r,fn:c,baseline:l?.baseline,params:R,skipped:b.skip||Z?.skip,only:b.only||Z?.only,opts:l})}var K=Object.assign((r,c,l)=>he(r,c,l,{}),{skip:(r,c,l)=>he(r,c,l,{skip:!0}),only:(r,c,l)=>he(r,c,l,{only:!0})});function B(){return ye}function A(){ye.length=0,Z=void 0,fe=void 0}function W(r,c){let l=fe;fe=r;try{return c()}finally{fe=l}}function h(r){return r.groupName?`${r.groupName}/${r.name}`:r.name}function I(r,c){return r.opts?.isolate??r.groupIsolate??c}function j(r,c){return r.opts?.gc??r.groupGc??c}function _(r,c){return r.opts?.cpu??r.groupCpu??c}function L(r,c){return r.opts?.alloc??r.groupAlloc??c}function H(r,c){if(!c)return[...r];let l=new RegExp(c);return r.filter((b)=>l.test(h(b)))}
|
|
8
|
-
export{D,k,y,x,e,m,n,p,F,O,i,a,E,o,S,s,t,u,P,d,f,g,T,U,q,K,B,A,W,h,I,j,_,L,H};
|
package/chunk-h6579788.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{D,k,y,x,e,n,p,F,i,a,E,o,S,t,u,P,d,f,g,W}from"./chunk-9dqf5cxf.js";function wn(s){return s.startsWith("file://")?s.slice(7):s}function ke(s,h,m){let T=s.nodes,U=T.length,B=new Map,I=[],A=new Map,_=new Int32Array(U);for(let q=0;q<U;q++){let Q=T[q],Z=Q.callFrame,ie=wn(Z.url),se=B.get(Z.functionName);if(se===void 0)se=new Map,B.set(Z.functionName,se);let ce=se.get(ie);if(ce===void 0)ce=I.length,se.set(ie,ce),I.push({key:e("fr",Z.functionName,ie),name:Z.functionName,url:ie||void 0,line:Z.lineNumber>=0?Z.lineNumber:void 0,col:Z.columnNumber>=0?Z.columnNumber:void 0});_[q]=ce,A.set(Q.id,q)}let O=Array(U);for(let q=0;q<U;q++){let Q=T[q];O[q]={id:Q.id,frameIx:_[A.get(Q.id)],children:Q.children??[]}}let j=new Float64Array(U),Y=new Float64Array(U),{samples:L,timeDeltas:K}=s;for(let q=0;q<L.length;q++){let Q=A.get(L[q]);if(Q===void 0)continue;j[Q]+=K[q]??0,Y[Q]+=1}let X=new Int32Array(U).fill(-1);for(let q=0;q<U;q++){let Q=T[q].children;if(!Q)continue;for(let Z of Q){let ie=A.get(Z);if(ie!==void 0)X[ie]=q}}let H=[],te=[];for(let q=U-1;q>=0;q--)if(X[q]===-1)te.push(q);while(te.length>0){let q=te.pop();H.push(q);let Q=T[q].children;if(!Q)continue;for(let Z of Q){let ie=A.get(Z);if(ie!==void 0&&X[ie]===q)te.push(ie)}}let re=new Float64Array(U);for(let q=H.length-1;q>=0;q--){let Q=H[q];re[Q]+=j[Q];let Z=X[Q];if(Z>=0)re[Z]+=re[Q]}let oe=Array(I.length),ne=[];for(let q=0;q<U;q++){let Q=O[q].frameIx,Z=oe[Q];if(Z)Z.selfUs+=j[q],Z.totalUs+=re[q],Z.samples+=Y[q];else{let ie={frameIx:Q,selfUs:j[q],totalUs:re[q],samples:Y[q]};oe[Q]=ie,ne.push(ie)}}return{origin:h,samplingIntervalUs:m,frames:I,nodes:O,totals:ne.sort((q,Q)=>Q.selfUs-q.selfUs),samples:{nodeIds:s.samples,timeDeltasUs:s.timeDeltas}}}function xn(s,h,m,T){let U=["--cpu-prof","--cpu-prof-dir",h,"--cpu-prof-name",m,"--cpu-prof-interval",String(T)],B=s[0];if(B==="bun"||B?.endsWith("/bun"))return[B,...U,...s.slice(1)];return s}async function Fe(s){let h=`${s.artifactDir}/${s.fileName}`,m=s.argv[0],T=m==="bun"||m?.endsWith("/bun"),U=xn(s.argv,s.artifactDir,s.fileName,s.intervalUs),B=T?s.env:{...process.env,...s.env,BUN_OPTIONS:`--cpu-prof --cpu-prof-dir ${s.artifactDir} --cpu-prof-name ${s.fileName} --cpu-prof-interval ${s.intervalUs}`},I=Bun.nanoseconds(),_=await Bun.spawn(U,{cwd:s.cwd,env:B,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,O=Bun.nanoseconds()-I,j=Bun.file(h);if(!await j.exists())return{diagnosticWallNs:O,exitCode:_,warnings:[{code:"artifact-missing",message:`Expected a .cpuprofile at ${h} after exit ${_}, found nothing. The workload's argv[0] must be a \`bun\` binary for CPU capture.`,data:{artifactPath:h,argv:s.argv}}]};let Y=await j.json(),L=ke(Y,"cpu-prof",s.intervalUs),K=Y.samples.length===0?[{code:"empty-profile",message:"CPU capture produced zero samples."}]:[];return{diagnosticWallNs:O,exitCode:_,artifactPath:h,cpu:L,warnings:K}}function We(s,h="heap-prof"){let{node_fields:m,node_types:T}=s.snapshot.meta,U=m.indexOf("type"),B=m.indexOf("self_size"),I=m.length,A=T[0];if(U===-1||B===-1||!Array.isArray(A))return{origin:h,typeCounts:[],objectCount:s.snapshot.node_count};let _=A.length,O=Array(_),j=new Map,Y=[],L=0,K=s.nodes,X=K.length;for(let ne=0;ne<X;ne+=I){let q=K[ne+U],Q=K[ne+B]??0;L+=Q;let Z;if(q>=0&&q<_){if(Z=O[q],Z===void 0)Z={type:A[q],count:0,bytes:0},O[q]=Z,Y.push(Z)}else{let ie=`unknown(${q})`;if(Z=j.get(ie),Z===void 0)Z={type:ie,count:0,bytes:0},j.set(ie,Z),Y.push(Z)}Z.count++,Z.bytes+=Q}let H=Y.sort((ne,q)=>q.count-ne.count),te=H.slice(0,20),re=H.slice(20),oe=te.map(({type:ne,count:q,bytes:Q})=>({type:ne,count:q,retainedBytes:Q}));if(re.length>0){let ne=0,q=0;for(let Q of re)ne+=Q.count,q+=Q.bytes;oe.push({type:"other",count:ne,retainedBytes:q})}return{origin:h,heapSizeBytes:L,objectCount:s.snapshot.node_count,typeCounts:oe}}function Pn(s,h,m){let T=["--heap-prof","--heap-prof-dir",h,"--heap-prof-name",m],U=s[0];if(U==="bun"||U?.endsWith("/bun"))return[U,...T,...s.slice(1)];return s}async function Ue(s){let h=`${s.artifactDir}/${s.fileName}`,m=s.argv[0],T=m==="bun"||m?.endsWith("/bun"),U=Pn(s.argv,s.artifactDir,s.fileName),B=T?s.env:{...process.env,...s.env,BUN_OPTIONS:`--heap-prof --heap-prof-dir ${s.artifactDir} --heap-prof-name ${s.fileName}`},I=Bun.nanoseconds(),_=await Bun.spawn(U,{cwd:s.cwd,env:B,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,O=Bun.nanoseconds()-I,j=Bun.file(h);if(!await j.exists())return{diagnosticWallNs:O,exitCode:_,warnings:[{code:"artifact-missing",message:`Expected a heap snapshot at ${h} after exit ${_}, found nothing. The workload's argv[0] must be a \`bun\` binary for heap capture.`,data:{artifactPath:h,argv:s.argv}}]};let Y=await j.json(),L=We(Y,"heap-prof");return{diagnosticWallNs:O,exitCode:_,artifactPath:h,heap:L,warnings:[]}}import{Session as kn}from"inspector/promises";var $n=1000;async function Oe(s,h={}){let m=h.intervalUs??$n,T=new kn;T.connect();let U=Bun.nanoseconds();try{await T.post("Profiler.enable"),await T.post("Profiler.setSamplingInterval",{interval:m}),await T.post("Profiler.start");let B=await s(),{profile:I}=await T.post("Profiler.stop"),A=Bun.nanoseconds()-U,_=ke(I,"inspector",m);return{result:B,cpu:_,diagnosticWallNs:A}}finally{T.disconnect()}}var Rn=10,Mn=3000000000,vn=3;function Ie(s){let h=s.warmup??vn,m=s.samples,T=s.minSamples??Rn,U=m??T,B=m!==void 0?0:s.budgetMs!==void 0?s.budgetMs*1e6:Mn,I=s.timeSource!==void 0,A=[],_=0,O=0;function j(){if(m!==void 0)return O>=m;return O>=U&&_>=B}async function Y(L,K){if(s.prepare)await k(s.prepare,{phase:L,index:K},{cwd:s.cwd,env:s.env});return D(s)}return{async warmup(){for(let L=0;L<h;L++)await Y("warmup",L)},async step(){if(j())return!1;let L=await Y("timing",O);return A.push({i:O,wallNs:L.wallNs,exitCode:L.exitCode,userNs:L.userNs,systemNs:L.systemNs,maxRssBytes:L.maxRssBytes,...L.reportedNs!==void 0&&{reportedNs:L.reportedNs}}),_+=L.wallNs,O++,!0},done:j,result(){let L=A.map((H)=>I?H.reportedNs??H.wallNs:H.wallNs),K=u(L),X=P(K,A.map((H)=>H.exitCode),I?"reported":"subprocess");return{trials:A,timing:K,warnings:X}}}}async function w(s){let h=Ie(s);await h.warmup();while(await h.step());return h.result()}var Be=new URL("./runner.ts",import.meta.url).pathname,Tn="node_modules/.cache/ostia";function v(){return Math.max(1,navigator.hardwareConcurrency||1)}async function R(s,h){let m=new Set;for(let T of s){let U=new Bun.Glob(T);for await(let B of U.scan({cwd:h,absolute:!1}))m.add(B)}return[...m].sort()}function Cn(s){if(s===void 0)return;return s==="auto"?v():s}async function N(s,h,m=process.cwd()){return{suites:s.suites.length>0?s.suites:h?.suites?await R(h.suites,m):[],budgetMs:s.budgetMs??h?.budgetMs,samples:s.samples??h?.samples,minSamples:s.minSamples??h?.minSamples,jobs:s.jobs??Cn(h?.jobs),gc:s.gc||(h?.gc??!1),cpu:s.cpu||(h?.cpu??!1),alloc:s.alloc||(h?.alloc??!1),filter:s.filter??h?.filter,isolate:s.isolate||(h?.isolate??!1),preload:s.preload.length>0?s.preload:h?.preload??[],bunFlags:s.bunFlags,outDir:s.outDir??h?.outDir,noiseCheck:s.noiseCheck,cwd:m}}async function c(s){let m=`${s.outDir??Tn}/bench-tmp`,T=s.cwd??process.cwd(),U=Math.max(1,Math.floor(s.jobs??1)),B={budgetMs:s.budgetMs,samples:s.samples,minSamples:s.minSamples,gc:s.gc,cpu:s.cpu,alloc:s.alloc,noiseCheck:s.noiseCheck},I=s.suites.map((j)=>j.startsWith("/")?j:`${T}/${j}`),A=(s.preload??[]).map((j)=>j.startsWith("/")?j:`${T}/${j}`),_=s.bunFlags??[],O=async(j,Y)=>{let L=new Set,K=0,X,H=async()=>{while(X===void 0&&K<j.length){let te=K++;try{let re=Bun.spawn(j[te],{cwd:T,stdout:"inherit",stderr:"inherit",stdin:"ignore"});L.add(re);let oe=await re.exited;if(L.delete(re),oe!==0)throw Error(`Bench suite failed: ${Y(te)} (runner exited ${oe})`)}catch(re){X??=re instanceof Error?re:Error(String(re));for(let oe of L)oe.kill()}}};if(await Promise.all(Array.from({length:Math.min(U,j.length)},H)),X)throw X};try{let j=I.map((Q)=>`${m}/${e("bench-plan",Q)}.json`),Y=I.map((Q)=>`${m}/${e("bench-primary",Q)}.json`),L=I.map((Q,Z)=>["bun",..._,Be,Q,Y[Z],JSON.stringify({...B,filter:s.filter,isolate:s.isolate,preload:A,planPath:j[Z]})]);await O(L,(Q)=>s.suites[Q]);let K=await Promise.all(j.map(async(Q)=>{let{tasks:Z}=await Bun.file(Q).json();return Z})),X=await Promise.all(Y.map(t)),H=[];for(let Q=0;Q<K.length;Q++)for(let Z of K[Q])if(Z.isolate)H.push({suiteIndex:Q,taskIds:[Z.id]});let te=H.map((Q,Z)=>`${m}/${e("bench-item",I[Q.suiteIndex],Z)}.json`),re=H.map((Q,Z)=>["bun",..._,Be,I[Q.suiteIndex],te[Z],JSON.stringify({...B,taskIds:Q.taskIds,preload:A,markIsolated:!0})]);await O(re,(Q)=>s.suites[H[Q].suiteIndex]);let oe=await Promise.all(te.map(t)),ne=[],q=[];for(let Q=0;Q<K.length;Q++){let Z=X[Q],ie=new Map;for(let ee of Z.measurements){let ae=ie.get(ee.workloadId)??[];ae.push(ee),ie.set(ee.workloadId,ae)}let se=0,ce=new Map;H.forEach((ee,ae)=>{if(ee.suiteIndex===Q)ce.set(ee.taskIds[0],oe[ae])});for(let ee of K[Q])if(ee.isolate){let ae=ce.get(ee.id),de=ae.workloads[0];ne.push(de);for(let ge of ae.measurements)if(ge.workloadId===de.id)q.push(ge)}else{let ae=Z.workloads[se];ne.push(ae),se++;for(let de of ie.get(ae.id)??[])q.push(de)}}return n(ne,q,X[0]?.environment)}finally{await Bun.spawn(["rm","-rf",m]).exited}}function J(s,h,m=8){if(m<=1)throw RangeError(`range: multiplier must be > 1, got ${m}`);if(s<=0)throw RangeError(`range: start must be > 0, got ${s}`);let T=[];for(let U=s;U<=h;U*=m)T.push(U);if(!T.includes(h))T.push(h);return T}function V(s,h){let m=Object.keys(s),T=(U,B)=>{if(U===m.length){W(B,()=>h(B));return}let I=m[U];for(let A of s[I])T(U+1,{...B,[I]:A})};T(0,{})}function In(s){let h=s>>>0;return()=>{h=h+1831565813|0;let m=Math.imul(h^h>>>15,1|h);return m=m+Math.imul(m^m>>>7,61|m)^m,((m^m>>>14)>>>0)/4294967296}}var $e=2000,Dn=2000;function _e(s){let h=s.length,m=h>>1;return h%2===0?(s[m-1]+s[m])/2:s[m]}function Ee(s,h){let m=s.length;if(m===1)return s[0];let T=h*(m-1),U=Math.floor(T),B=Math.ceil(T);if(U===B)return s[U];let I=T-U;return s[U]*(1-I)+s[B]*I}function Ae(s,h,m){if(s.length<=m)return s;let T=[...s];for(let U=0;U<m;U++){let B=U+Math.floor(h()*(T.length-U)),I=T[U];T[U]=T[B],T[B]=I}return T.slice(0,m)}function je(s,h){let m=s.length,T=new Float64Array(m);for(let U=0;U<m;U++)T[U]=s[Math.floor(h()*m)];return T.sort(),_e(T)}function Le(s,h,m={}){let T=m.seed??(Date.now()^Math.imul(s.length,2654435761))>>>0,U=In(T),B=m.iterations??Dn,I=s.length>$e||h.length>$e,A=Ae(s,U,$e),_=Ae(h,U,$e),O=new Float64Array(A);O.sort();let j=_e(O),Y=new Float64Array(B);for(let L=0;L<B;L++){let K=je(A,U),X=je(_,U);Y[L]=j===0?X-K===0?0:1/0:(X-K)/j*100}return Y.sort(),{ci95:[Ee(Y,0.025),Ee(Y,0.975)],seed:T,data:{subsampled:I,iterations:B}}}function Sn(s){let h=s<0?-1:1,m=Math.abs(s),T=0.254829592,U=-0.284496736,B=1.421413741,I=-1.453152027,A=1.061405429,_=0.3275911,O=1/(1+0.3275911*m),j=1-((((1.061405429*O+-1.453152027)*O+1.421413741)*O+-0.284496736)*O+0.254829592)*O*Math.exp(-m*m);return h*j}function Nn(s){return 0.5*(1+Sn(s/Math.SQRT2))}function He(s,h){let m=s.length,T=h.length,U=m+T,B=[...s.map((H)=>({v:H,group:0})),...h.map((H)=>({v:H,group:1}))].sort((H,te)=>H.v-te.v),I=new Float64Array(U),A=0,_=0;while(_<U){let H=_;while(H+1<U&&B[H+1].v===B[_].v)H++;let te=(_+H)/2+1;for(let oe=_;oe<=H;oe++)I[oe]=te;let re=H-_+1;if(re>1)A+=re**3-re;_=H+1}let O=0;for(let H=0;H<U;H++)if(B[H].group===0)O+=I[H];let j=O-m*(m+1)/2,Y=m*T/2,L=Math.sqrt(m*T*(U+1-A/(U*(U-1)))/12),K=L===0?0:(j-Y)/L,X=Math.min(1,Math.max(0,2*(1-Nn(Math.abs(K)))));return{u:j,z:K,pValue:X}}var l={timingPct:5,frameSelfPct:10,heapTypePct:10,minFrameSelfUs:1000,alpha:0.01,bootstrapIterations:2000},De=5;function Re(s,h){if(s===0)return h===0?0:1/0;return(h-s)/s*100}function he(s,h,m){return s.measurements.find((T)=>T.workloadId===h&&T.phase===m)}function b(s,h,m=l){let T=new Set(h.workloads.map((B)=>B.id)),U=[];for(let B of s.workloads){if(!T.has(B.id))continue;let I=M(s,h,B.id,m);if(I)U.push(I)}return U}function M(s,h,m,T=l){let U=he(s,m,"timing"),B=he(h,m,"timing"),I=he(s,m,"cpu"),A=he(h,m,"cpu"),_=he(s,m,"heap"),O=he(h,m,"heap"),j=h.workloads.find((ne)=>ne.id===m),Y=U?.id??I?.id??_?.id,L=B?.id??A?.id??O?.id??j?.id;if(!Y||!L)return;let K=!1,X=[],H=Math.max(T.timingPct,s.environment?.noise.floorPct??0,h.environment?.noise.floorPct??0),te;if(U?.timing&&j?.skipped&&!B?.timing)te={medianDeltaPct:0,meanDeltaPct:0,effectPct:0,verdict:"unchanged"},X.push({code:"skipped",message:"Candidate has no timing measurement for this workload (task.skip()); treated as unchanged.",data:{workloadId:m}});else if(U?.timing&&B?.timing){let ne=U.timing.samples,q=B.timing.samples,Q=Re(U.timing.median,B.timing.median),Z=Re(U.timing.mean,B.timing.mean);if(ne.length<De||q.length<De){let ie=Q>H?"regressed":Q<-H?"improved":"unchanged";if(ie==="regressed")K=!0;te={medianDeltaPct:Q,meanDeltaPct:Z,effectPct:Q,verdict:ie},X.push({code:"thin-comparison",message:`Only ${ne.length} baseline / ${q.length} candidate sample(s); falling back to a point-estimate threshold instead of a bootstrap CI and Mann-Whitney test (needs ${De}+ per side).`,data:{baseSamples:ne.length,candSamples:q.length}})}else{let ie=Le(ne,q,{iterations:T.bootstrapIterations}),se=He(ne,q),ce=ie.ci95[0]>H&&se.pValue<T.alpha?"regressed":ie.ci95[1]<-H&&se.pValue<T.alpha?"improved":"unchanged";if(ce==="regressed")K=!0;te={medianDeltaPct:Q,meanDeltaPct:Z,effectPct:Q,ci95:ie.ci95,pValue:se.pValue,seed:ie.seed,verdict:ce}}}let re;if(I?.cpu&&A?.cpu){let ne=new Map(I.cpu.totals.map((se)=>[I.cpu.frames[se.frameIx].key,se])),q=new Map(A.cpu.totals.map((se)=>[A.cpu.frames[se.frameIx].key,se])),Q=new Map(I.cpu.frames.map((se)=>[se.key,se.name])),Z=new Map(A.cpu.frames.map((se)=>[se.key,se.name]));re=[...new Set([...ne.keys(),...q.keys()])].map((se)=>{let ce=ne.get(se)?.selfUs??0,ee=q.get(se)?.selfUs??0;return{frameKey:se,name:Z.get(se)??Q.get(se)??se,baseSelfUs:ce,candSelfUs:ee,deltaPct:Re(ce,ee)}}).sort((se,ce)=>Math.abs(ce.deltaPct)-Math.abs(se.deltaPct));for(let se of re)if((se.baseSelfUs>=T.minFrameSelfUs||se.candSelfUs>=T.minFrameSelfUs)&&se.deltaPct>T.frameSelfPct)K=!0}let oe;if(_?.heap&&O?.heap){let ne=new Map(_.heap.typeCounts.map((Z)=>[Z.type,Z])),q=new Map(O.heap.typeCounts.map((Z)=>[Z.type,Z]));oe=[...new Set([...ne.keys(),...q.keys()])].map((Z)=>{let ie=ne.get(Z),se=q.get(Z);return{type:Z,baseCount:ie?.count??0,candCount:se?.count??0,baseBytes:ie?.retainedBytes,candBytes:se?.retainedBytes,deltaPct:Re(ie?.count??0,se?.count??0)}}).sort((Z,ie)=>Math.abs(ie.deltaPct)-Math.abs(Z.deltaPct));for(let Z of oe)if(Z.deltaPct>T.heapTypePct)K=!0}return{id:e("cmp",Y,L),baselineMeasurementId:Y,candidateMeasurementId:L,timing:te,...X.length>0&&{warnings:X},frames:re,heapTypes:oe,thresholds:{...T,effectiveTimingPct:H},verdict:K?"fail":"pass"}}function fe(s,h){if(h){let m=s.measurements.find((T)=>T.id===h);return m?.cpu?[m]:[]}return s.measurements.filter((m)=>m.phase==="cpu"&&m.cpu)}function be(s){let h=s.nodes,m=h.length,T=Fn(s),U=new Int32Array(m).fill(-1);for(let _=0;_<m;_++)for(let O of h[_].children){let j=T(O);if(j!==-1)U[j]=_}let B=[];for(let _=0;_<m;_++)if(U[_]===-1)B.push(_);let I=[],A=[];for(let _=B.length-1;_>=0;_--)A.push(B[_]);while(A.length>0){let _=A.pop();I.push(_);for(let O of h[_].children){let j=T(O);if(j!==-1&&U[j]===_)A.push(j)}}return{count:m,indexOf:T,parentIx:U,roots:B,order:I}}function Fn(s){let h=s.nodes,m=h.length,T=1/0,U=-1/0,B=!0;for(let A=0;A<m;A++){let _=h[A].id;if(!Number.isInteger(_)){B=!1;break}if(_<T)T=_;if(_>U)U=_}if(B&&m>0&&U-T<m*4+64){let A=U-T+1,_=new Int32Array(A).fill(-1);for(let O=0;O<m;O++)_[h[O].id-T]=O;return(O)=>{let j=O-T;return j>=0&&j<A?_[j]:-1}}let I=new Map;for(let A=0;A<m;A++)I.set(h[A].id,A);return(A)=>I.get(A)??-1}function Ve(s,h){let{count:m,indexOf:T,parentIx:U,order:B}=h,I=new Float64Array(m),A=new Float64Array(m),_=s.samples?.nodeIds??[],O=s.samples?.timeDeltasUs??[];for(let Y=0;Y<_.length;Y++){let L=T(_[Y]);if(L===-1)continue;I[L]+=O[Y]??0,A[L]+=1}let j=new Float64Array(m);for(let Y=B.length-1;Y>=0;Y--){let L=B[Y];j[L]+=I[L];let K=U[L];if(K>=0)j[K]+=j[L]}return{selfUs:I,totalUs:j,samples:A}}var ze={name:"collapsed",async render(s,h={}){return{files:fe(s,h.measurementId).map((U)=>{let B=U.cpu,{nodes:I,frames:A}=B,_=be(B),O=Array(_.count);for(let X of _.order){let H=A[I[X].frameIx].name||"(anonymous)",te=_.parentIx[X];O[X]=te===-1?H:`${O[te]};${H}`}let j=new Float64Array(_.count),Y=[],L=B.samples?.nodeIds??[];for(let X=0;X<L.length;X++){let H=_.indexOf(L[X]);if(H===-1)continue;if(j[H]++===0)Y.push(H)}let K=Array(Y.length);for(let X=0;X<Y.length;X++){let H=Y[X];K[X]=`${O[H]} ${j[H]}`}return{path:`${U.id}.collapsed.txt`,content:K.join(`
|
|
3
|
-
`)+(K.length>0?`
|
|
4
|
-
`:"")}})}}};var Ke={name:"cpuprofile",async render(s,h={}){let m=fe(s,h.measurementId),T=[],U=[];for(let B of m){if(B.cpu?.origin!=="cpu-prof"&&B.cpu?.origin!=="inspector"){U.push(`${B.id} (origin ${B.cpu?.origin??"unknown"} has no .cpuprofile artifact to pass through)`);continue}let I=B.artifacts.find((_)=>_.kind==="cpuprofile");if(!I){U.push(`${B.id} (no cpuprofile artifact recorded on this run)`);continue}let A=Bun.file(I.path);if(!await A.exists()){U.push(`${B.id} (artifact missing on disk: ${I.path})`);continue}T.push({path:`${B.id}.cpuprofile`,content:await A.text()})}if(T.length===0&&U.length>0)return{text:`No .cpuprofile artifacts available:
|
|
5
|
-
${U.map((B)=>` - ${B}`).join(`
|
|
6
|
-
`)}
|
|
7
|
-
`};return{files:T}}};var Ge={name:"json",async render(s){return{text:S(s)}}};var Je={name:"jsonl",async render(s){let{measurements:h,...m}=s;return{text:`${[x(m),...h.map((U)=>x(U))].join(`
|
|
8
|
-
`)}
|
|
9
|
-
`}}};var Wn={ns:1,\u{b5}s:1000,ms:1e6,s:1e9};function xe(s){let h=Math.abs(s);if(h>=1e9)return"s";if(h>=1e6)return"ms";if(h>=1000)return"\xB5s";return"ns"}function Un(s){let h=Math.floor(Math.log10(Math.max(Math.abs(s),1)))+1;return Math.max(1,3-h)}function me(s,h=xe(s)){let m=s/Wn[h];return`${m.toFixed(Un(m))} ${h}`}function Me(s){return`${s.cpuModel} \xB7 ${s.cores} cores \xB7 load ${s.loadAvg1.toFixed(1)} \xB7 noise floor ${s.noise.floorPct.toFixed(1)}%`}function Ye(s){return(s/1e6).toFixed(3)}function Pe(s){return s?.label??s?.command?.join(" ")??s?.entry?.task??s?.id??"unknown"}function qe(s){if(!s?.params)return"";return` (${Object.entries(s.params).map(([m,T])=>`${m}=${T}`).join(", ")})`}function On(s){let h;for(let m of s){let T=m?.params?Object.keys(m.params):void 0;if(T?.length!==2)return;if(h===void 0)h=T;else if(T.length!==h.length||T.some((U,B)=>U!==h[B]))return}return h}var Qe=10,Xe=10,Ze={name:"markdown",async render(s){let h=new Map(s.workloads.map((I)=>[I.id,I])),m=[];m.push("# Profile Report","");let T=s.git?` \xB7 ${s.git.sha} (${s.git.branch}${s.git.dirty?", dirty":""})`:"";if(m.push(`Bun ${s.bunVersion} \xB7 ostia ${s.toolVersion} \xB7 ${s.platform.os}/${s.platform.arch} \xB7 ${s.createdAt}${T}`,""),s.environment)m.push(Me(s.environment),"");let U=s.measurements.filter((I)=>I.phase==="timing"&&I.timing!==void 0),B=s.workloads.filter((I)=>I.skipped&&!U.some((A)=>A.workloadId===I.id));if(U.length>0||B.length>0){m.push("## Timing","");let I=new Map,A=[];for(let j of U){let Y=h.get(j.workloadId)?.entry?.group;if(Y===void 0){A.push(j);continue}let L=I.get(Y);if(L)L.push(j);else I.set(Y,[j])}let _=new Map;for(let[j,Y]of I){let L=On(Y.map((K)=>h.get(K.workloadId)));if(L)_.set(j,{keys:L,runs:Y});else A.push(...Y)}if(A.length>0||B.length>0){m.push("| Task | Median | Spread (p75\u2026p99) | Mean \xB1 SD | Range | MAD |","|---|---|---|---|---|---|");for(let j of A){let Y=h.get(j.workloadId),L=Pe(Y)+qe(Y),K=j.timing,X=xe(K.median),H=K.p75??K.median,te=K.p99??K.max,re=K.mad!==void 0?me(K.mad,X):"-";m.push(`| ${L} | ${me(K.median,X)} | ${me(H,X)}\u2026${me(te,X)} | ${me(K.mean,X)} \xB1 ${me(K.stddev,X)} | ${me(K.min,X)}\u2026${me(K.max,X)} | ${re} |`)}for(let j of B){let Y=Pe(j)+qe(j);m.push(`| ${Y} | - skipped | - | - | - | - |`)}m.push("")}for(let[j,{keys:Y,runs:L}]of _){let[K,X]=Y,H=[],te=[],re=new Map;for(let oe of L){let ne=h.get(oe.workloadId).params,q=ne[K],Q=ne[X];if(!H.includes(q))H.push(q);if(!te.includes(Q))te.push(Q);re.set(`${q}\x00${Q}`,oe)}m.push(`### ${j} (${K} \xD7 ${X})`,""),m.push(`| ${K} \\ ${X} | ${te.join(" | ")} |`,`|---|${te.map(()=>"---").join("|")}|`);for(let oe of H){let ne=te.map((q)=>{let Q=re.get(`${oe}\x00${q}`);return Q?me(Q.timing.median):"-"});m.push(`| ${oe} | ${ne.join(" | ")} |`)}m.push("")}let O=U.filter((j)=>j.warnings.length>0);if(O.length>0){m.push("### Warnings","");for(let j of O){let Y=Pe(h.get(j.workloadId));for(let L of j.warnings)m.push(`- **${Y}**: ${L.message} (\`${L.code}\`)`)}m.push("")}}for(let I of s.measurements){if(I.phase!=="cpu"&&I.phase!=="heap")continue;let A=Pe(h.get(I.workloadId));if(I.phase==="cpu"){if(m.push(`## CPU capture - ${A}`,""),m.push(`instrumented, diagnostic wall ${Ye(I.diagnosticWallNs??0)}ms`,""),I.cpu){m.push(`origin: \`${I.cpu.origin}\`, interval: ${I.cpu.samplingIntervalUs}\xB5s`,""),m.push("| Self % | Self (ms) | Total (ms) | Frame |","|---|---|---|---|");let _=I.cpu.totals.reduce((O,j)=>O+j.selfUs,0)||1;for(let O of I.cpu.totals.slice(0,Qe)){let j=I.cpu.frames[O.frameIx],Y=(O.selfUs/_*100).toFixed(1);m.push(`| ${Y}% | ${(O.selfUs/1000).toFixed(2)} | ${(O.totalUs/1000).toFixed(2)} | ${j?.name||"(anonymous)"} |`)}if(m.push(""),I.jit){let O=I.jit.tiers;m.push(`JIT tiers: LLInt ${O.llint} \xB7 Baseline ${O.baseline} \xB7 DFG ${O.dfg} \xB7 FTL ${O.ftl}`,"")}}}else if(m.push(`## Heap snapshot - ${A}`,""),m.push(`instrumented, diagnostic wall ${Ye(I.diagnosticWallNs??0)}ms`,""),I.heap){m.push(`${I.heap.objectCount??"?"} objects, ${((I.heap.heapSizeBytes??0)/1e6).toFixed(2)}MB`,""),m.push("| Count | Type |","|---|---|");for(let _ of I.heap.typeCounts.slice(0,Xe))m.push(`| ${_.count} | ${_.type} |`);m.push("")}for(let _ of I.artifacts)m.push(`- artifact: \`${_.path}\``);for(let _ of I.warnings)m.push(`- ! ${_.message} (\`${_.code}\`)`);if(I.artifacts.length>0||I.warnings.length>0)m.push("")}if(s.comparisons&&s.comparisons.length>0){m.push("## Comparisons","");for(let I of s.comparisons){let A=s.measurements.find((O)=>O.id===I.candidateMeasurementId),_=Pe(A?h.get(A.workloadId):h.get(I.candidateMeasurementId));if(m.push(`### ${I.verdict==="pass"?"\u2713":"\u2717"} ${_}`,""),I.timing){let O=I.timing.medianDeltaPct>0?"+":"";m.push(`- timing: ${O}${I.timing.medianDeltaPct.toFixed(1)}% median (**${I.timing.verdict}**)`)}for(let O of I.frames?.slice(0,Qe)??[]){if(Math.abs(O.deltaPct)<0.5)continue;let j=O.deltaPct>0?"+":"";m.push(`- frame \`${O.name}\`: ${j}${O.deltaPct.toFixed(1)}% self-time (${(O.baseSelfUs/1000).toFixed(2)}ms \u2192 ${(O.candSelfUs/1000).toFixed(2)}ms)`)}for(let O of I.heapTypes?.slice(0,Xe)??[]){if(Math.abs(O.deltaPct)<0.5)continue;let j=O.deltaPct>0?"+":"";m.push(`- heap \`${O.type}\`: ${j}${O.deltaPct.toFixed(1)}% count (${O.baseCount} \u2192 ${O.candCount})`)}m.push("")}}return{text:m.join(`
|
|
10
|
-
`)}}};var Bn=15;function Se(s){return`n${s}`}function En(s,h,m){return`${(s||"(anonymous)").replace(/"/g,"'")} (self ${(h/1000).toFixed(2)}ms, total ${(m/1000).toFixed(2)}ms)`}function An(s,h,m,T){let U=[];if(T<=0)return U;for(let B=0;B<h;B++){if(B===m)continue;let I=s[B];if(U.length===T&&I<=s[U[T-1]])continue;let A=U.length;while(A>0&&s[U[A-1]]<I)A--;if(U.splice(A,0,B),U.length>T)U.pop()}return U}var en={name:"mermaid",async render(s,h={}){let m=h.topN??Bn;return{files:fe(s,h.measurementId).map((B)=>{let I=B.cpu,{nodes:A,frames:_}=I,O=be(I),{selfUs:j,totalUs:Y}=Ve(I,O),{parentIx:L}=O,K=O.roots[0]??-1,X=An(j,O.count,K,m),H=new Set(K!==-1?[K]:[]),te=[];for(let oe of X){te.length=0;for(let ne=oe;ne!==-1;ne=L[ne])te.push(ne);for(let ne=te.length-1;ne>=0;ne--)H.add(te[ne])}let re=["graph TD"];for(let oe of H){let ne=A[oe].id;re.push(` ${Se(ne)}["${En(_[A[oe].frameIx].name,j[oe],Y[oe])}"]`)}for(let oe of H){let ne=L[oe];if(ne!==-1&&H.has(ne))re.push(` ${Se(A[ne].id)} --> ${Se(A[oe].id)}`)}return{path:`${B.id}.mermaid.md`,content:`${re.join(`
|
|
11
|
-
`)}
|
|
12
|
-
`}})}}};function nn(s){if(!s?.entry)return;if(s.entry.group!==void 0)return s.entry.group;let h=s.entry.task,m=h.lastIndexOf("/");return m===-1?void 0:h.slice(0,m)}function ve(s){let h=Math.min(...s.map((U)=>U.run.timing.median)),m=new Map;for(let U of s){let B=nn(U.workload);if(B===void 0)continue;let I=m.get(B);if(I)I.push(U);else m.set(B,[U])}let T=new Map;for(let U of s){let B=nn(U.workload);if(B===void 0){T.set(U,h);continue}let I=m.get(B)??[U],A=I.find((_)=>_.workload?.baseline);T.set(U,A?A.run.timing.median:Math.min(...I.map((_)=>_.run.timing.median)))}return T}function ue(s){return Number.isFinite(s)?Number(s.toPrecision(6)):s}function jn(s,h){return s?.entry?.task??s?.label??s?.command?.join(" ")??h.workloadId}function _n(s,h){let m={task:s.entry?.task??s.label??s.id,skipped:!0,warnings:[]};if(s.entry?.group!==void 0)m.group=s.entry.group;if(s.description!==void 0)m.description=s.description;if(s.groupDescription!==void 0)m.groupDescription=s.groupDescription;if(s.params!==void 0)m.params=s.params;if(h?.timing)m.delta={medianPct:ue(h.timing.medianDeltaPct),meanPct:ue(h.timing.meanDeltaPct),verdict:h.timing.verdict,pass:h.verdict==="pass"};return m}function Ln(s){let h=new Map(s.workloads.map((O)=>[O.id,O])),m=s.measurements.filter((O)=>O.phase==="timing"&&O.timing!==void 0).map((O)=>({run:O,workload:h.get(O.workloadId)})),T=m.length>1?ve(m):void 0,U=new Map((s.comparisons??[]).map((O)=>[O.candidateMeasurementId,O])),B=new Set(m.map((O)=>O.run.workloadId)),I=new Map;for(let O of s.measurements){if(O.phase!=="cpu"||O.warnings.length===0)continue;let j=I.get(O.workloadId)??[];I.set(O.workloadId,[...j,...O.warnings])}let A=s.workloads.filter((O)=>O.skipped&&!B.has(O.id)).map((O)=>_n(O,U.get(O.id)));return[...m.map((O)=>{let{run:j,workload:Y}=O,L=j.timing,K={task:jn(Y,j),unit:"ns",samples:L.samples.length,mean:ue(L.mean),median:ue(L.median),stddev:ue(L.stddev),stddevPct:ue(L.mean===0?0:L.stddev/L.mean*100),min:ue(L.min),max:ue(L.max),warnings:[...j.warnings,...I.get(j.workloadId)??[]].map((H)=>H.data?{code:H.code,data:H.data}:{code:H.code})};if(L.p75!==void 0)K.p75=ue(L.p75);if(L.p99!==void 0)K.p99=ue(L.p99);if(L.mad!==void 0)K.mad=ue(L.mad);if(Y?.entry?.group!==void 0)K.group=Y.entry.group;if(Y?.description!==void 0)K.description=Y.description;if(Y?.groupDescription!==void 0)K.groupDescription=Y.groupDescription;if(Y?.params!==void 0)K.params=Y.params;if(T)K.relative=ue(L.median/(T.get(O)??L.median));if(Y?.baseline)K.baseline=!0;let X=U.get(j.id);if(X?.timing){if(K.delta={medianPct:ue(X.timing.medianDeltaPct),meanPct:ue(X.timing.meanDeltaPct),verdict:X.timing.verdict,pass:X.verdict==="pass"},X.timing.ci95)K.delta.ci95=[ue(X.timing.ci95[0]),ue(X.timing.ci95[1])];if(X.timing.pValue!==void 0)K.delta.pValue=ue(X.timing.pValue)}return K}),...A]}var tn={name:"minimal",async render(s){let h=Ln(s).map((m)=>JSON.stringify(m));return{text:h.length>0?`${h.join(`
|
|
13
|
-
`)}
|
|
14
|
-
`:""}}};var Hn="https://www.speedscope.app/file-format-schema.json";function rn(s){return s?.label??s?.command?.join(" ")??s?.entry?.task??"profile"}var sn={name:"speedscope",async render(s,h={}){let m=fe(s,h.measurementId),T=new Map(s.workloads.map((B)=>[B.id,B]));return{files:m.map((B)=>{let I=B.cpu,{nodes:A}=I,_=be(I),O=I.samples?.nodeIds??[],j=I.samples?.timeDeltasUs??[],Y=Array(_.count);for(let H of _.order){let te=_.parentIx[H],re=A[H].frameIx;Y[H]=te===-1?[re]:[...Y[te],re]}let L=Array(O.length);for(let H=0;H<O.length;H++){let te=_.indexOf(O[H]);L[H]=te===-1?[]:Y[te]}let K=0;for(let H=0;H<j.length;H++)K+=j[H];let X={$schema:Hn,exporter:"ostia",name:rn(T.get(B.workloadId)),activeProfileIndex:0,shared:{frames:I.frames.map((H)=>({name:H.name||"(anonymous)",file:H.url,line:H.line!==void 0?H.line+1:void 0}))},profiles:[{type:"sampled",name:rn(T.get(B.workloadId)),unit:"microseconds",startValue:0,endValue:K,samples:L,weights:j}]};return{path:`${B.id}.speedscope.json`,content:`${JSON.stringify(X,null,2)}
|
|
15
|
-
`}})}}};function Vn(s){return(s/1e6).toFixed(3)}function zn(s){if(s<1024)return`${s.toFixed(0)}B`;if(s<1048576)return`${(s/1024).toFixed(2)}KB`;return`${(s/1048576).toFixed(2)}MB`}function Te(s){return s.label??s.command?.join(" ")??s.entry?.task??s.id}function Kn(s){if(!s?.entry)return;if(s.entry.group!==void 0)return s.entry.group;let h=s.entry.task,m=h.lastIndexOf("/");return m===-1?void 0:h.slice(0,m)}var an={name:"table",async render(s){let h=s.measurements.filter((ee)=>ee.phase==="timing"&&ee.timing!==void 0),m=new Map(s.workloads.map((ee)=>[ee.id,ee])),T=s.environment?[Me(s.environment),""]:[],U=s.workloads.filter((ee)=>ee.skipped&&!h.some((ae)=>ae.workloadId===ee.id));if(h.length===0&&U.length===0){let ee=on(s,m);return{text:ee.length>0?`${[...T,...ee].join(`
|
|
16
|
-
`)}
|
|
17
|
-
`:`(no timing runs)
|
|
18
|
-
`}}let B=new Map(h.map((ee)=>[ee.workloadId,ee])),I=[];for(let ee of s.workloads){let ae=B.get(ee.id);if(ae)I.push({kind:"measured",run:ae,workload:ee,label:Te(ee)});else if(ee.skipped)I.push({kind:"skipped",workload:ee,label:Te(ee)})}let A=I.filter((ee)=>ee.kind==="measured"),_=new Map(s.measurements.filter((ee)=>ee.phase==="memstats"&&ee.memory?.bytesPerOp!==void 0).map((ee)=>[ee.workloadId,ee.memory.bytesPerOp])),O=_.size>0,j=A.length>1,Y=ve(A),L=new Map,K=new Map,X;for(let ee of I){let ae=Kn(ee.workload);if(ae!==X){if(ae!==void 0)K.set(ee,ae);X=ae}L.set(ee,ae!==void 0?" ":"")}let H=Math.max(4,...I.map((ee)=>L.get(ee).length+ee.label.length)),te=10,re=18,oe=18,ne=10,q=[...T],Q=O?` ${"Alloc/op".padEnd(ne)}`:"",Z=`${"Task".padEnd(H)} ${"Median".padEnd(te)} ${"Spread".padEnd(re)} ${"Range".padEnd(oe)}${Q}${j?" Relative":""}`;q.push(Z),q.push("-".repeat(Z.length));let ie=[];for(let ee of I){let ae=K.get(ee);if(ae!==void 0)q.push(`${ae}:`);let de=L.get(ee);if(ee.kind==="skipped"){q.push(`${(de+ee.label).padEnd(H)} - skipped`);continue}let{run:ge,label:ln,workload:Ce}=ee,pe=ge.timing,ye=xe(pe.median),dn=pe.p75??pe.median,fn=pe.p99??pe.max,gn=me(pe.median,ye),hn=`${me(dn,ye)}\u2026${me(fn,ye)}`,bn=`${me(pe.min,ye)}\u2026${me(pe.max,ye)}`,we=`${(de+ln).padEnd(H)} ${gn.padEnd(te)} ${hn.padEnd(re)} ${bn.padEnd(oe)}`;if(O){let le=Ce?_.get(Ce.id):void 0,yn=le!==void 0?zn(le):"";we+=` ${yn.padEnd(ne)}`}if(j){let le=pe.median/(Y.get(ee)??pe.median);if(le===1)we+=Ce?.baseline?" 1.00\xD7 (baseline)":" 1.00\xD7";else if(le>1)we+=` ${le.toFixed(2)}\xD7 slower`;else we+=` ${(1/le).toFixed(2)}\xD7 faster`}if(q.push(we),ge.warnings.length>0)q.push(`${" ".repeat(de.length)} ! ${ge.warnings.map((le)=>le.code).join(", ")}`),ie.push(ee)}if(ie.length>0){q.push(""),q.push("Warnings:");for(let ee of ie)for(let ae of ee.run.warnings)q.push(` ${ee.label}: ${ae.message}`)}let se=Jn(s,m);if(se.length>0)q.push(""),q.push(...se);let ce=on(s,m);if(ce.length>0)q.push(""),q.push(...ce);return{text:`${q.map((ee)=>ee.trimEnd()).join(`
|
|
19
|
-
`)}
|
|
20
|
-
`}}};function Gn(s,h,m){let T=s.measurements.find((B)=>B.id===m),U=T?h.get(T.workloadId):h.get(m);return U?Te(U):m}function on(s,h){if(!s.comparisons||s.comparisons.length===0)return[];let m=[];for(let T of s.comparisons){let U=Gn(s,h,T.candidateMeasurementId),B=T.verdict==="pass"?"\u2713":"\u2717";if(m.push(`${B} ${U}`),T.timing){let I=(A)=>`${A>=0?"+":""}${A.toFixed(1)}%`;if(T.timing.ci95&&T.timing.pValue!==void 0){let A=T.timing.pValue<0.001?"p<0.001":`p=${T.timing.pValue.toFixed(3)}`;m.push(` timing: ${I(T.timing.medianDeltaPct)} median, 95% CI [${I(T.timing.ci95[0])}, ${I(T.timing.ci95[1])}], ${A} (${T.timing.verdict})`)}else m.push(` timing: ${I(T.timing.medianDeltaPct)} median (${T.timing.verdict})`)}if(T.frames)for(let I of T.frames.slice(0,cn)){if(Math.abs(I.deltaPct)<0.5)continue;let A=I.deltaPct>0?"+":"";m.push(` frame ${I.name}: ${A}${I.deltaPct.toFixed(1)}% self-time (${(I.baseSelfUs/1000).toFixed(2)}ms -> ${(I.candSelfUs/1000).toFixed(2)}ms)`)}if(T.heapTypes)for(let I of T.heapTypes.slice(0,un)){if(Math.abs(I.deltaPct)<0.5)continue;let A=I.deltaPct>0?"+":"";m.push(` heap ${I.type}: ${A}${I.deltaPct.toFixed(1)}% count (${I.baseCount} -> ${I.candCount})`)}}return m}var cn=5,un=5;function Jn(s,h){let m=[];for(let T of s.measurements){if(T.phase!=="cpu"&&T.phase!=="heap")continue;let U=h.get(T.workloadId),B=U?Te(U):T.workloadId;if(T.phase==="cpu")if(T.cpu){m.push(`CPU capture - ${B} (instrumented, ${T.cpu.samplingIntervalUs}\xB5s interval, diagnostic wall ${Vn(T.diagnosticWallNs??0)}ms)`);let I=T.cpu.totals.reduce((A,_)=>A+_.selfUs,0)||1;for(let A of T.cpu.totals.slice(0,cn)){let _=T.cpu.frames[A.frameIx],O=(A.selfUs/I*100).toFixed(1);m.push(` ${O.padStart(5)}% ${(A.selfUs/1000).toFixed(2).padStart(8)}ms self ${_?.name??"?"}`)}}else m.push(`CPU capture - ${B} (instrumented, no evidence captured)`);else if(T.heap){let I=((T.heap.heapSizeBytes??0)/1e6).toFixed(2);m.push(`Heap snapshot - ${B} (instrumented, ${T.heap.objectCount??"?"} objects, ${I}MB)`);for(let A of T.heap.typeCounts.slice(0,un))m.push(` ${String(A.count).padStart(6)} ${A.type}`)}else m.push(`Heap snapshot - ${B} (instrumented, no evidence captured)`);for(let I of T.artifacts)m.push(` artifact: ${I.path}`);for(let I of T.warnings)m.push(` ! ${I.message}`)}return m}var r={table:an,json:Ge,markdown:Ze,jsonl:Je,minimal:tn,collapsed:ze,mermaid:en,speedscope:sn,cpuprofile:Ke};function G(s){return s}var Yn="node_modules/.cache/ostia",Ne=1000;async function C(s){let h=o({samples:s.samples??null,budgetMs:s.budgetMs??null,minSamples:s.minSamples??null,warmup:s.warmup??null,cpu:s.cpu??!1,heap:s.heap??!1,cpuIntervalUs:s.cpuIntervalUs??Ne}),T=`${s.outDir??Yn}/artifacts`,U=s.noiseCheck===!1?void 0:f(),B=U?g(U):void 0,I=[],A=[],_=s.commands.map((Y)=>{let L=typeof Y==="string"||Array.isArray(Y)?{command:Y}:Y,K=Array.isArray(L.command)?L.command:y(L.command),X=L.prepare??s.prepare,H=L.timeSource??s.timeSource,te=p(K,L.label??(Array.isArray(L.command)?void 0:L.command),{prepare:X,timeSource:H});return{argv:K,workload:te,prepare:X,timeSource:H}}),O=(s.interleave??!0)&&_.length>1,j=(Y)=>({argv:Y.argv,cwd:s.cwd,env:s.env,samples:s.samples,budgetMs:s.budgetMs,minSamples:s.minSamples,warmup:s.warmup,prepare:Y.prepare,timeSource:Y.timeSource});if(O){let Y=_.map((K)=>Ie(j(K)));for(let K of Y)await K.warmup();let L=!0;while(L){L=!1;for(let K of Y)if(await K.step())L=!0}for(let K=0;K<_.length;K++){let{argv:X,workload:H,prepare:te}=_[K];I.push(H);let re=Y[K].result(),oe=i({workload:H,configFingerprint:h,trials:re.trials,timing:re.timing,warnings:B&&A.length===0?[...re.warnings,B]:re.warnings,interleaved:!0});A.push(oe),A.push(...await mn(H,X,oe.id,h,s,T,te))}return n(I,A,U)}for(let Y of _){let{argv:L,workload:K,prepare:X}=Y;I.push(K);let H=await w(j(Y)),te=i({workload:K,configFingerprint:h,trials:H.trials,timing:H.timing,warnings:B&&A.length===0?[...H.warnings,B]:H.warnings});A.push(te),A.push(...await mn(K,L,te.id,h,s,T,X))}return n(I,A,U)}async function mn(s,h,m,T,U,B,I){let A=[],_=async(O)=>{if(I)await k(I,{phase:O,index:0},{cwd:U.cwd,env:U.env})};if(U.cpu){await _("cpu");let O=`${m}-cpu.cpuprofile`,j=await Fe({argv:h,cwd:U.cwd,env:U.env,artifactDir:B,fileName:O,intervalUs:U.cpuIntervalUs??Ne});A.push(await pn({workload:s,phase:"cpu",configFingerprint:T,diagnosticWallNs:j.diagnosticWallNs,exitCode:j.exitCode,cpu:j.cpu,artifactPath:j.artifactPath,artifactKind:"cpuprofile",warnings:j.warnings}))}if(U.heap){await _("heap");let O=`${m}-heap.heapsnapshot`,j=await Ue({argv:h,cwd:U.cwd,env:U.env,artifactDir:B,fileName:O});A.push(await pn({workload:s,phase:"heap",configFingerprint:T,diagnosticWallNs:j.diagnosticWallNs,exitCode:j.exitCode,heap:j.heap,artifactPath:j.artifactPath,artifactKind:"heapsnapshot",warnings:j.warnings}))}return A}async function pn(s){let h=`${s.workload.id}-${s.phase}-${s.configFingerprint}`,m=s.artifactPath?[await E(h,s.artifactKind,s.artifactPath)]:[];return a({workload:s.workload,phase:s.phase,configFingerprint:s.configFingerprint,diagnosticWallNs:s.diagnosticWallNs,exitCode:s.exitCode,cpu:s.cpu,heap:s.heap,warnings:s.warnings,artifacts:m})}async function z(s,h={}){let m=F(s),T=o({intervalUs:h.intervalUs??Ne,origin:h.origin??"inspector"}),U=(O)=>O.samples?.nodeIds.length===0?[{code:"empty-profile",message:"In-process capture produced zero samples."}]:[];if(h.origin==="jsc"){let{result:O,cpu:j,jit:Y,diagnosticWallNs:L}=await d(s,h),K=a({workload:m,phase:"cpu",configFingerprint:T,diagnosticWallNs:L,cpu:j,jit:Y,warnings:U(j),artifacts:[]});return{result:O,measurement:K,document:n([m],[K])}}let{result:B,cpu:I,diagnosticWallNs:A}=await Oe(s,h),_=a({workload:m,phase:"cpu",configFingerprint:T,diagnosticWallNs:A,cpu:I,warnings:U(I),artifacts:[]});return{result:B,measurement:_,document:n([m],[_])}}
|
|
21
|
-
export{v,R,N,c,l,b,M,w,J,V,r,G,C,z};
|