ostia 0.2.9 → 0.2.11
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/README.md +42 -24
- package/ab-runner.ts +6 -4
- package/chunk-5m601yfv.js +15 -0
- package/chunk-82vs1rw1.js +2 -0
- package/chunk-dvqggjkn.js +14 -0
- package/chunk-fc36fd0b.js +3 -0
- package/chunk-pdv5zb3w.js +27 -0
- package/chunk-r6hwb84z.js +25 -0
- package/chunk-scvezzm9.js +229 -0
- package/cli.js +1 -224
- package/index.d.ts +571 -417
- package/index.js +1 -1
- package/package.json +1 -1
- package/runner.ts +5 -16
- package/chunk-cqy5fzae.js +0 -16
- package/chunk-t6q9jbb6.js +0 -25
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{x,fe,_,V,J,he,K,be,bn,M,h,wn,yn,kn,Pn}from"./chunk-pdv5zb3w.js";import"./chunk-fc36fd0b.js";import{r,u,E,a,xn,Mn,Tn}from"./chunk-5m601yfv.js";export{_ as AbBaseError,J as AbSetupError,V as AbSuiteError,x as DEFAULT_THRESHOLDS,M as MINIMAL_PROTOCOL_VERSION,E as OstiaDocumentError,he as ab,K as bench,fe as compareDocuments,r as createDocument,Pn as defineConfig,xn as group,Tn as keep,a as loadDocument,kn as profile,bn as range,h as renderers,wn as run,u as saveDocument,yn as sweep,Mn as task,be as time};
|
package/package.json
CHANGED
package/runner.ts
CHANGED
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
while (Atomics.load(slots, 0) === ${i.sampling}) {
|
|
9
|
-
const kib = (process.memoryUsage.rss() / 1024) | 0
|
|
10
|
-
if (kib > Atomics.load(slots, 1)) Atomics.store(slots, 1, kib)
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
postMessage(0)
|
|
14
|
-
}`;async function w(){let e=new Int32Array(new SharedArrayBuffer(8)),r=new Worker(URL.createObjectURL(new Blob([M],{type:"application/javascript"}))),m=new Promise((s)=>{r.onmessage=s});r.postMessage(e.buffer);while(Atomics.load(e,0)!==i.ready)await Bun.sleep(1);return{async during(s){try{Atomics.store(e,0,i.go),Atomics.notify(e,0);while(Atomics.load(e,0)!==i.sampling);return await s(),Atomics.store(e,0,i.stop),await m,Atomics.load(e,1)*1024}finally{r.terminate()}}}}async function h(e,r,m){let s=m??await w();Bun.gc(!0);let l=g(),c=process.resourceUsage().maxRSS*1024,u=Bun.nanoseconds(),n=0,k=await s.during(async()=>{let f=e();if(p(f))await f;n=Bun.nanoseconds()-u}),d=process.resourceUsage().maxRSS*1024,t=Math.max(k,d>c?d:0),o=r?l.rssBytes-r.rssBytes-(l.liveBytes-r.liveBytes):0;return{peakBytes:Math.max(0,t-l.rssBytes),slackBytes:Math.max(0,o),wallNs:n}}async function B(){let[e,r,m]=process.argv.slice(2);if(!e||!r)return process.stderr.write(`bench runner: usage: runner.ts <suiteFile> <outputPath> [optsJson]
|
|
15
|
-
`),2;let s=m?JSON.parse(m):{},l,c;if(s.peakMemFor)c=await w(),await import("./index.js"),l=g();for(let t of s.preload??[])await import(t);L(),await import(e);let u=y();if(u.length===0)return process.stderr.write(`bench runner: ${e} registered no tasks (no task() calls found).
|
|
16
|
-
`),2;let n;try{n=x(u,s.filter,e)}catch(t){return process.stderr.write(`bench runner: ${t.message}
|
|
17
|
-
`),2}if(s.taskIds){let t=new Set(s.taskIds);n=n.filter((o)=>t.has(b(o)))}if(s.peakMemFor){let t=n.find((f)=>P(e,f).id===s.peakMemFor);if(!t)return process.stderr.write(`bench runner: no task with workload id ${s.peakMemFor} in ${e}.
|
|
18
|
-
`),2;await t.groupBefore?.(),await t.opts?.before?.();let o=await h(t.fn,l,c);return await t.opts?.after?.(),await t.groupAfter?.(),await Bun.write(r,JSON.stringify(o)),0}if(s.planPath){let t=n.map((o)=>({id:b(o),workloadId:P(e,o).id,isolate:ue(o,s.isolate??!1),peakMem:!o.skipped&&we(o,s.peakMem??!1)}));await Bun.write(s.planPath,JSON.stringify({tasks:t}))}let k=s.taskIds?n:n.filter((t)=>!ue(t,s.isolate??!1)),d=await j(e,k,s);return await a(d,r),0}B().then((e)=>process.exit(e));
|
|
3
|
+
import{u,D,ue,nn,de,g,B,U,pe}from"./chunk-5m601yfv.js";import{H,G,ne}from"./chunk-dvqggjkn.js";async function c(){let[r,o,i]=process.argv.slice(2);if(!r||!o)return process.stderr.write(`bench runner: usage: runner.ts <suiteFile> <outputPath> [optsJson]
|
|
4
|
+
`),2;let t=i?JSON.parse(i):{},p,l;if(t.peakMemFor)l=await G(),await import("./index.js"),p=H();for(let e of t.preload??[])await import(e);ue(),await import(r);let d=D();if(d.length===0)return process.stderr.write(`bench runner: ${r} registered no tasks (no task() calls found).
|
|
5
|
+
`),2;let a;try{a=B(d,t.filter,r,!t.workloadIds&&!t.peakMemFor)}catch(e){return process.stderr.write(`bench runner: ${e.message}
|
|
6
|
+
`),2}let n=(e)=>U(r,e).id;if(t.workloadIds){let e=new Set(t.workloadIds);a=a.filter((s)=>e.has(n(s)))}if(t.peakMemFor){let e=a.find((f)=>n(f)===t.peakMemFor);if(!e)return process.stderr.write(`bench runner: no task with workload id ${t.peakMemFor} in ${r}.
|
|
7
|
+
`),2;await g(e,"before"),await e.opts?.before?.();let s=await ne(e.fn,p,l);return await e.opts?.after?.(),await g(e,"after"),await Bun.write(o,JSON.stringify(s)),0}if(t.planPath){let e=a.map((s)=>({workloadId:n(s),isolate:nn(s,t.isolate??!1),peakMem:!s.skipped&&de(s,t.peakMem??!1)}));await Bun.write(t.planPath,JSON.stringify({tasks:e}))}let k=t.workloadIds?a:a.filter((e)=>!nn(e,t.isolate??!1)),m=await pe(r,k,t);return await u(m,o),0}c().then((r)=>process.exit(r));
|
package/chunk-cqy5fzae.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
function g(l,d){return JSON.stringify(Ue(l),null,d)}function Ue(l){if(Array.isArray(l)){let d=!1;for(let f=0;f<l.length;f++){let w=l[f];if(w!==null&&typeof w==="object"){d=!0;break}}return d?l.map(Ue):l}if(l!==null&&typeof l==="object"){let d=l,f={};for(let w of Object.keys(d).sort())f[w]=Ue(d[w]);return f}return l}function e(l,...d){let f=Bun.CryptoHasher.hash("sha256",g(d),"hex");return`${l}_${f.slice(0,16)}`}function c(l){if(l.length===0)throw Error("computeTimingStats: samples must be non-empty");let d=l.length,f=gn(l),w=0;for(let U=0;U<d;U++)w+=l[U];let N=w/d,A=r(f,0.5),W=0;for(let U=0;U<d;U++){let V=l[U]-N;W+=V*V}let G=Math.sqrt(W/d),D=f[0],z=f[d-1],J=r(f,0.25),H=r(f,0.75),re=H-J,ae=J-1.5*re,ye=H+1.5*re,oe=J-3*re,le=H+3*re,ke=0,xe=0;for(let U=0;U<d;U++){let V=l[U];if(V<oe||V>le)xe++;else if(V<ae||V>ye)ke++}let Oe=r(f,0.99),Ie=new Float64Array(d);for(let U=0;U<d;U++)Ie[U]=Math.abs(l[U]-A);Ie.sort();let Ne=r(Ie,0.5);return{unit:"ns",samples:l,mean:N,median:A,stddev:G,min:D,max:z,outliers:{mild:ke,severe:xe},p25:J,p75:H,p99:Oe,mad:Ne}}function gn(l){let d=new Float64Array(l.length);return d.set(l),d.sort(),d}function r(l,d){let f=l.length;if(f===1)return l[0];let w=d*(f-1),N=Math.floor(w),A=Math.ceil(w);if(N===A)return l[N];let W=w-N;return l[N]*(1-W)+l[A]*W}var bn=5000000;function X(l,d,f="subprocess",w=[]){let N=[],A=l.samples[0];if(A!==void 0){let D=l.p75-l.p25;if(A>l.median+3*D&&A>2*l.median&&D>0)N.push({code:"slow-first-run",message:`First run took ${n(A)}, much slower than the median ${n(l.median)}. Consider more warmup.`,data:{firstNs:A,medianNs:l.median}})}if(f!=="inprocess"&&l.outliers.mild+l.outliers.severe>0)N.push({code:"outliers-detected",message:`${l.outliers.mild+l.outliers.severe} outlier(s) detected (${l.outliers.severe} severe, ${l.outliers.mild} mild).`,data:l.outliers});if(f==="subprocess"&&l.median<bn)N.push({code:"fast-command",message:`Median run time (${(l.median/1e6).toFixed(3)}ms) is very fast; results may be dominated by spawn overhead.`,data:{medianNs:l.median}});let W=new Set(w),G=d.filter((D)=>D!==void 0&&D!==0&&!W.has(D));if(G.length>0)N.push({code:"nonzero-exit",message:`${G.length} of ${d.length} trial(s) exited non-zero.`,data:{exitCodes:G}});return N}var F=0.5,kn={ns:1,\u{b5}s:1000,ms:1e6,s:1e9};function M(l){let d=Math.abs(l);if(d>=1e9)return"s";if(d>=1e6)return"ms";if(d>=1000)return"\xB5s";return"ns"}function hn(l){let d=Math.floor(Math.log10(Math.max(Math.abs(l),1)))+1;return Math.max(1,3-d)}function n(l,d=M(l)){let f=l/kn[d];return`${f.toFixed(hn(f))} ${d}`}function E(l){return l.samples?.nodeIds.length??l.totals.reduce((d,f)=>d+f.samples,0)}function k(l){if(l<1024)return`${l.toFixed(0)}B`;if(l<1048576)return`${(l/1024).toFixed(2)}KB`;return`${(l/1048576).toFixed(2)}MB`}function q(l){return`${l.cpuModel} \xB7 ${l.cores} cores \xB7 load ${l.loadAvg1.toFixed(1)} \xB7 noise floor ${l.noise.floorPct.toFixed(1)}%`}function v(l){return`${l.sha} (${l.branch}${l.dirty?", dirty":""})`}function t(l){return l?.label??l?.command?.join(" ")??l?.entry?.task??l?.id??"unknown"}function K(l,d){if(l===1)return d?"1.00\xD7 (baseline)":"1.00\xD7";if(l>1)return`${l.toFixed(2)}\xD7 slower`;return`${(1/l).toFixed(2)}\xD7 faster`}function de(l){return l.replace(/\|/g,"\\|").replace(/</g,"<").replace(/>/g,">").replace(/`/g,"\\`").replace(/\r\n|\r|\n/g,"<br>")}function T(l){let d=l.trials.filter((w)=>!w.timedOut&&!w.timeSourceNoMatch&&w.userNs!==void 0&&w.systemNs!==void 0);if(d.length===0)return;let f=(w)=>r(Float64Array.from(w).sort(),0.5);return{userNs:f(d.map((w)=>w.userNs)),systemNs:f(d.map((w)=>w.systemNs))}}function Y(l){return`${n(l.userNs)}/${n(l.systemNs)}`}class _e extends Error{}function Z(l){if(typeof l.pattern==="string")return;let{flags:d}=l.pattern;if(d.includes("g")||d.includes("y")||d.includes("d"))throw RangeError("timeSource pattern must not use the g or y flag")}function wn(...l){let d=l.filter((f)=>f!==void 0);if(d.length===0)return;if(d.length===1)return d[0];return AbortSignal.any(d)}var yn={ns:1,us:1000,ms:1e6,s:1e9};function B(l,d){let f=l!==void 0?AbortSignal.timeout(l):void 0,w=wn(f,d);return{spawn:w?{signal:w,killSignal:"SIGKILL"}:{},timedOut:()=>f?.aborted??!1}}async function pe(l){let d=l.timeSource!==void 0,f=Bun.nanoseconds(),w=B(l.timeoutMs,l.signal),N=Bun.spawn(l.argv,{cwd:l.cwd,env:l.env,stdout:d?"pipe":"ignore",stderr:d?"pipe":"ignore",stdin:"ignore",...w.spawn}),A=d?Promise.all([new Response(N.stdout).text(),new Response(N.stderr).text()]):void 0,W=await N.exited,G=Bun.nanoseconds(),D=N.resourceUsage?.(),z=w.timedOut(),J={wallNs:G-f,exitCode:z?null:W,userNs:D?Number(D.cpuTime.user)*1000:void 0,systemNs:D?Number(D.cpuTime.system)*1000:void 0,maxRssBytes:D?.maxRSS,...z?{timedOut:!0}:{}};if(A){let[H,re]=await A;if(l.timeSource&&!z)try{J.reportedNs=xn(l.timeSource,H,re,l.argv)}catch(ae){if(!(ae instanceof _e))throw ae;J.timeSourceNoMatch=!0,J.timeSourceMissOutput=Tn(H,re)}}return J}function xn(l,d,f,w=[]){let N=typeof l.pattern==="string"?new RegExp(l.pattern):l.pattern,A=l.group??1,W=N.exec(d)??N.exec(f),G=w.length>0?` for "${w.join(" ")}"`:"";if(!W)throw new _e(`timeSource pattern ${N} did not match the output${G}. Output was:
|
|
3
|
-
${Ke(d,f)}`);let D=W[A];if(D===void 0)throw Error(`timeSource pattern ${N} matched${G} but has no capture group ${A} (matched text: "${W[0]}").`);let z=Number(D);if(!Number.isFinite(z))throw Error(`timeSource pattern ${N} group ${A} captured "${D}"${G}, which is not a number.`);return z*yn[l.unit??"ms"]}function Ke(l,d){let w=(A)=>A.length>800?`${A.slice(0,800)}\u2026(${A.length-800} more)`:A,N=[];if(l.trim())N.push(`--- stdout ---
|
|
4
|
-
${w(l.trimEnd())}`);if(d.trim())N.push(`--- stderr ---
|
|
5
|
-
${w(d.trimEnd())}`);return N.length>0?N.join(`
|
|
6
|
-
`):"(empty)"}var Ce=2048;function Tn(l,d){let f=Ke(l,d);if(Buffer.byteLength(f,"utf8")<=Ce)return f;let w=f.slice(0,Ce);while(Buffer.byteLength(w,"utf8")>Ce)w=w.slice(0,-1);return`${w}\u2026`}var Sn=1048576,Mn=(l)=>`
|
|
7
|
-
\u2026(${l} bytes elided)\u2026
|
|
8
|
-
`;async function vn(l,d=Sn){let f=Math.floor(d/2),w=l.getReader(),N=[],A=0,W=[],G=0,D=0;try{for(;;){let{done:ae,value:ye}=await w.read();if(ae)break;if(!ye||ye.byteLength===0)continue;D+=ye.byteLength;let oe=ye;if(A<f){let le=f-A;if(oe.byteLength<=le){N.push(oe),A+=oe.byteLength;continue}N.push(oe.subarray(0,le)),A+=le,oe=oe.subarray(le)}W.push(oe),G+=oe.byteLength;while(G>f&&W.length>0){let le=W[0],ke=G-f;if(le.byteLength<=ke)W.shift(),G-=le.byteLength;else W[0]=le.subarray(ke),G-=ke}}}finally{w.releaseLock()}let z=new TextDecoder,J=z.decode(Ve(N));if(D<=A+G)return J;let H=z.decode(Ve(W)),re=D-A-G;return`${J}${Mn(re)}${H}`}function Ve(l){let d=l.reduce((N,A)=>N+A.byteLength,0),f=new Uint8Array(d),w=0;for(let N of l)f.set(N,w),w+=N.byteLength;return f}async function Q(l,d,f){if(typeof l==="function"){await l(d);return}let w=Le(l),N=B(f.timeoutMs,f.signal),A=Bun.spawn(w,{cwd:f.cwd,env:f.env,stdout:"ignore",stderr:"pipe",stdin:"ignore",...N.spawn}),W=vn(A.stderr).catch(()=>""),G=await A.exited;if(N.timedOut()){let D=(await W).trim();throw Error(`prepare command "${w.join(" ")}" timed out after ${f.timeoutMs}ms before ${d.phase} trial ${d.index}.${D?`
|
|
9
|
-
${D}`:""}`)}if(f.signal?.aborted)return;if(G!==0){let D=(await W).trim();throw Error(`prepare command "${w.join(" ")}" exited with code ${G} before ${d.phase} trial ${d.index}.${D?`
|
|
10
|
-
${D}`:""}`)}}function Le(l){if(l===void 0||typeof l==="function")return;return Array.isArray(l)?l:R(l)}function ze(l){if(l===void 0)return;return{pattern:typeof l.pattern==="string"?l.pattern:l.pattern.source,...l.group!==void 0&&{group:l.group},...l.unit!==void 0&&{unit:l.unit}}}function R(l){return l.trim().split(/\s+/).filter(Boolean)}import{renameSync as Nn}from"fs";import{isAbsolute as In,relative as Pn}from"path";var qe={name:"ostia",version:"0.2.9",description:"Fast profiling and benchmarking for Bun.",type:"module",engines:{bun:">=1.4.0"},exports:{".":"./src/index.ts"},bin:{ostia:"src/cli/main.ts"},scripts:{build:"bun scripts/build.ts","smoke:package":"bun scripts/smoke-package.ts",test:"bun test",typecheck:"tsc6","typecheck:package":"tsc6 -p tests/types",lint:"biome check .","lint:fix":"biome check --write . --unsafe","lint:changed":"biome check --changed --no-errors-on-unmatched .","lint:fix:changed":"biome check --write --unsafe --changed --no-errors-on-unmatched .",knip:"knip-bun",bench:"bun src/cli/main.ts bench bench/*.ts","bench:baseline":"bun src/cli/main.ts bench bench/*.ts --budget 3000 --min-samples 30 --export-json .ostia/baselines/bench-main.json",baseline:"bun src/cli/main.ts baseline save",dogfood:"bun test && bun src/cli/main.ts ci",examples:"bun scripts/run-examples.ts"},devDependencies:{"@biomejs/biome":"2.5.14","@types/bun":"^1.4.2",knip:"^6.38.0",typescript:"npm:@typescript/typescript6@^6.0.2"},repository:{type:"git",url:"git+https://github.com/metonym/ostia.git"}};var S=qe.version;var Fe,Ye=!1;function We(l){let d=Bun.spawnSync(["git",...l],{timeout:200,stdout:"pipe",stderr:"ignore"});return d.success?d.stdout.toString().trim():void 0}function Ze(){if(Ye)return Fe;Ye=!0;try{let l=We(["rev-parse","--short","HEAD"]);if(l===void 0)Fe=void 0;else{let d=We(["rev-parse","--abbrev-ref","HEAD"]),f=We(["status","--porcelain"]);Fe={sha:l,branch:d??"HEAD",dirty:(f?.length??0)>0}}}catch{Fe=void 0}return Fe}function s(l,d,f){let w=Ze();return{schemaVersion:2,toolVersion:S,bunVersion:Bun.version,platform:{os:process.platform,arch:process.arch},createdAt:new Date().toISOString(),workloads:l,measurements:d,...f!==void 0&&{environment:f},...w!==void 0&&{git:w}}}function _(l,d,f={}){if(f.timeSource)Z(f.timeSource);let w=Le(f.prepare),N=ze(f.timeSource),A=typeof f.prepare==="function"?f.prepare.toString():w;return{id:e("wl","subprocess",l,...A!==void 0||N!==void 0?[A??null,N??null]:[]),kind:"subprocess",command:l,label:d,...w!==void 0&&{prepare:w},...N!==void 0&&{timeSource:N}}}function fe(l,d){return{id:e("wl","inprocess",l.name,l.toString()),kind:"inprocess",label:d}}function Xe(l,d,f={}){let w=In(l)?Pn(process.cwd(),l):l;return{id:f.params!==void 0?e("wl","inprocess-entry",w,d,f.params):e("wl","inprocess-entry",w,d),kind:"inprocess",entry:{file:l,task:d,...f.group!==void 0&&{group:f.group}},...f.label!==void 0&&{label:f.label},...f.baseline!==void 0&&{baseline:f.baseline},...f.description!==void 0&&{description:f.description},...f.groupDescription!==void 0&&{groupDescription:f.groupDescription},...f.isolated!==void 0&&{isolated:f.isolated},...f.params!==void 0&&{params:f.params},...f.skipped!==void 0&&{skipped:f.skipped}}}function C(l){return{id:e("run",l.workload.id,"timing",l.configFingerprint,Bun.version,S),workloadId:l.workload.id,phase:"timing",instrumented:!1,configFingerprint:l.configFingerprint,trials:l.trials,timing:l.timing,warnings:l.warnings,artifacts:[],memory:An(l.trials),...l.interleaved!==void 0&&{interleaved:l.interleaved}}}function An(l){let d=l.map((f)=>f.maxRssBytes).filter((f)=>f!==void 0);if(d.length===0)return;return{origin:"resourceUsage",maxRssBytes:Math.max(...d)}}function h(l){return{id:e("run",l.workload.id,l.phase,l.configFingerprint,Bun.version,S),workloadId:l.workload.id,phase:l.phase,instrumented:!0,configFingerprint:l.configFingerprint,trials:[{i:0,wallNs:l.diagnosticWallNs,exitCode:l.exitCode}],diagnosticWallNs:l.diagnosticWallNs,cpu:l.cpu,heap:l.heap,memory:l.memory,jit:l.jit,warnings:l.warnings,artifacts:l.artifacts}}function ge(l){return{id:e("run",l.workload.id,"paired",l.configFingerprint,Bun.version,S),workloadId:l.workload.id,phase:"paired",instrumented:!1,configFingerprint:l.configFingerprint,trials:[],timing:l.timing,diagnosticWallNs:l.diagnosticWallNs,paired:l.paired,warnings:l.warnings,artifacts:[]}}async function he(l,d,f){let N=await Bun.file(f).arrayBuffer(),A=new Bun.CryptoHasher("sha256");return A.update(N),{id:e("art",l,d,f),kind:d,path:f,sha256:A.digest("hex"),bytes:N.byteLength}}function i(l){return e("cfg",l)}function I(l){return`${g(l,2)}
|
|
11
|
-
`}async function ee(l,d){let f=`${d}.tmp-${process.pid}`;await Bun.write(f,l),Nn(f,d)}async function a(l,d){await ee(I(l),d)}class O extends Error{code;path;schemaVersion;constructor(l,d,f={}){super(d);this.name="OstiaDocumentError",this.code=l,this.path=f.path,this.schemaVersion=f.schemaVersion}}async function o(l){let d=await Bun.file(l).text(),f;try{f=JSON.parse(d)}catch(N){let A=N instanceof Error?N.message:String(N);throw new O("invalid-json",`${l}: invalid JSON (${A})`,{path:l})}let w=f!==null&&typeof f==="object"?f.schemaVersion:void 0;if(typeof w!=="number")throw new O("not-a-document",`${l}: not a ProfileDocument (missing schemaVersion)`,{path:l});if(w!==2)throw new O("unsupported-schema",`${l}: unsupported ProfileDocument schemaVersion ${w} (this ostia reads 2)`,{path:l,schemaVersion:w});return En(f)}function En(l){for(let d of l.measurements){let f=d.timing;if(!f||f.mad!==void 0||f.samples.length===0)continue;d.timing={...c(f.samples),...f.batch!==void 0&&{batch:f.batch}}}return l}import De from"os";var On=200,Qe=64,Fn=(()=>{let l=new Uint8Array(4096);for(let d=0;d<l.length;d++)l[d]=d*2654435761&255;return l})();function Bn(l,d){let f=d;for(let w=0;w<l.length;w++)f^=l[w],f=Math.imul(f,16777619);return f>>>0}function Un(l){let d=c(l);return{floorPct:d.median===0?0:d.mad/d.median*100,referenceMedianNs:d.median,samples:l.length}}function en(l=On){let d=l*1e6,f=[],w=0,N=Bun.nanoseconds(),A=0;while(A<d){let W=Bun.nanoseconds();for(let D=0;D<Qe;D++)w^=Bn(Fn,D);let G=Bun.nanoseconds();f.push((G-W)/Qe),A=Bun.nanoseconds()-N}return Un(f)}var $n=0.75;function u(){let[l=0,d=0]=De.loadavg();return{cpuModel:De.cpus()[0]?.model??"unknown",cores:De.availableParallelism(),loadAvg1:l,loadAvg5:d,noise:en()}}function m(l){if(l.loadAvg1<=l.cores*$n)return;return{code:"noisy-machine",message:`Load average ${l.loadAvg1.toFixed(2)} exceeds 75% of ${l.cores} available core(s); timing noise may be elevated.`,data:{loadAvg1:l.loadAvg1,cores:l.cores}}}import{profile as _n}from"bun:jsc";var Cn=new Map([["LLInt","llint"],["Baseline","baseline"],["DFG","dfg"],["FTL","ftl"]]),nn=4294967295;function tn(l,d){let f=d??l.interval*1e6,w=new Map,N=[];function A(U,V,ie,Me){let se=w.get(U);if(se===void 0)se=new Map,w.set(U,se);let Re=V??"",Pe=se.get(Re);if(Pe===void 0)Pe=N.length,se.set(Re,Pe),N.push({key:e("fr",U,Re),name:U,url:V,line:ie,col:Me});return Pe}function W(U){let V=U.line===nn,ie=V?void 0:U.line-1,Me=V||U.column===nn?void 0:U.column-1;return A(U.name,U.sourceURL,ie,Me)}let G=A("(root)",void 0,void 0,void 0),D=1,z={id:0,frameIx:G,children:new Map,selfUs:0,samples:0,totalUs:0},J=new Map([[0,z]]),H={llint:0,baseline:0,dfg:0,ftl:0},re=new Map,ae=[],ye=[];for(let U of l.traces){let V=U.frames,ie=z;for(let Re=V.length-1;Re>=0;Re--){let Pe=W(V[Re]),Ae=ie.children.get(Pe);if(!Ae)Ae={id:D++,frameIx:Pe,children:new Map,selfUs:0,samples:0,totalUs:0},ie.children.set(Pe,Ae),J.set(Ae.id,Ae);ie=Ae}ie.selfUs+=f,ie.samples+=1,ae.push(ie.id),ye.push(f);let Me=V[0],se=Me&&Cn.get(Me.category);if(se){H[se]++;let Re=re.get(se)??new Map;Re.set(ie.frameIx,(Re.get(ie.frameIx)??0)+1),re.set(se,Re)}}function oe(U){let V=U.selfUs;for(let ie of U.children.values())V+=oe(ie);return U.totalUs=V,V}oe(z);let le=new Map;function ke(U){let V=le.get(U.frameIx);if(V)V.selfUs+=U.selfUs,V.totalUs+=U.totalUs,V.samples+=U.samples;else le.set(U.frameIx,{frameIx:U.frameIx,selfUs:U.selfUs,totalUs:U.totalUs,samples:U.samples});for(let ie of U.children.values())ke(ie)}ke(z);let xe=[...J.values()].map((U)=>({id:U.id,frameIx:U.frameIx,children:[...U.children.values()].map((V)=>V.id)})),Oe={origin:"jsc-profile",samplingIntervalUs:f,frames:N,nodes:xe,totals:[...le.values()].sort((U,V)=>V.selfUs-U.selfUs),samples:{nodeIds:ae,timeDeltasUs:ye}},Ie=[...re.entries()].flatMap(([U,V])=>[...V.entries()].sort((ie,Me)=>Me[1]-ie[1]).slice(0,3).map(([ie,Me])=>({tier:U,frameKey:N[ie].key,samples:Me})));return{cpu:Oe,jit:{origin:"jsc-profile",tiers:H,topFramesByTier:Ie}}}var Ln=1000;async function ne(l,d={}){let f=d.intervalUs??Ln,w,N=Bun.nanoseconds(),A=await _n(async()=>(w=await l(),w),f),W=Bun.nanoseconds()-N,{cpu:G,jit:D}=tn(A.stackTraces,f);return{result:w,cpu:G,jit:D,diagnosticWallNs:W}}var Wn=500,Dn=20,rn=3,Gn=10,jn=2,Hn=0.1,Jn=1000,sn=1e4,Vn=2*sn,Kn=1e6,zn=5,te=256;function an(l){let d=Math.log10(Math.max(1,l)/1e6),f=Math.round(rn+jn*d);return Math.min(Gn,Math.max(rn,f))}function qn(l,d){let f=Math.floor(d/l);return Math.min(Dn,Math.max(f,an(l)))}var Yn;function ve(l){Yn=l}function p(l){return l!==null&&typeof l==="object"&&typeof l.then==="function"}var Zn=(async()=>{}).constructor,Xn=0;function ce(l){let d=`/* ostia task loop ${Xn++} */
|
|
12
|
-
const t0 = Bun.nanoseconds()
|
|
13
|
-
for (let b = 0; b < n; b++) sink[b & ${te-1}] = ${l?"await ":""}fn()
|
|
14
|
-
return Bun.nanoseconds() - t0`;return(l?Zn:Function)("fn","sink","n",d)}function on(l,d){return Math.max(1,Math.ceil(Jn/l),Math.ceil(d/(l*sn)))}function Qn(l){let d=[...l].sort((f,w)=>f-w);return d[d.length>>1]}async function un(l,d={}){let f=(d.budgetMs??Wn)*1e6,w=f*(d.warmup??Hn),N=Bun.nanoseconds(),A=l(),W=p(A);if(W)await A;let G=Math.max(1,Bun.nanoseconds()-N),D=ce(W),z=Array(te),J=(se)=>D(l,z,se),H=Bun.nanoseconds(),re=1;while(Bun.nanoseconds()-H<w){let se=await J(re);if(G=Math.max(1,se/re),se<Kn)re*=2}let ae=on(G,f);if(ae>1){let se=[];for(let Re=0;Re<zn;Re++)se.push(await J(ae)/ae);G=Math.max(1,Qn(se)),ae=on(G,f)}let ye=G*ae,oe=d.samples??d.minSamples??qn(ye,f),le=d.samples!==void 0?0:f,ke=d.samples??Math.max(Vn,oe),xe=[],Oe=Bun.nanoseconds(),Ie=0,Ne=0;while(Ne<oe||Ie<le&&Ne<ke){let se=await J(ae);if(xe.push({i:Ne,wallNs:se/ae}),Ne++,Ie=Bun.nanoseconds()-Oe,d.gc)Bun.gc(!0);if(Ne>=ke&&Ne>=oe)break}let U=xe.map((se)=>se.wallNs),V=c(U);if(ae>1)V.batch=ae;let ie=X(V,[],"inprocess"),Me=an(ye);if(xe.length<Me)ie.push({code:"low-sample-count",message:`Only ${xe.length} sample(s) at ~${et(ye)} per trial; ${Me} is the floor for this cost class. Raise minSamples or the time budget for a steadier number.`,data:{samples:xe.length,target:Me,trialCostNs:ye}});return{trials:xe,timing:V,warnings:ie}}function et(l){if(l>=1e9)return`${(l/1e9).toFixed(2)}s`;if(l>=1e6)return`${(l/1e6).toFixed(1)}ms`;if(l>=1000)return`${(l/1000).toFixed(1)}\xB5s`;return`${l.toFixed(0)}ns`}var He=[],Se,Ee;function Ge(l,d,f,w){let N=Se;Se={name:l,description:f?.description,isolate:f?.isolate,gc:f?.gc,cpu:f?.cpu,alloc:f?.alloc,peakMem:f?.peakMem,before:f?.before,after:f?.after,skip:w.skip,only:w.only};try{d()}finally{Se=N}}var Te=Object.assign((l,d,f)=>Ge(l,d,f,{}),{skip:(l,d,f)=>Ge(l,d,f,{skip:!0}),only:(l,d,f)=>Ge(l,d,f,{only:!0})});function je(l,d,f,w){let N=Ee!==void 0||f?.params!==void 0?{...Ee,...f?.params}:void 0;He.push({groupName:Se?.name,groupDescription:Se?.description,groupIsolate:Se?.isolate,groupGc:Se?.gc,groupCpu:Se?.cpu,groupAlloc:Se?.alloc,groupPeakMem:Se?.peakMem,groupBefore:Se?.before,groupAfter:Se?.after,name:l,fn:d,baseline:f?.baseline,params:N,skipped:w.skip||Se?.skip,only:w.only||Se?.only,opts:f})}var $e=Object.assign((l,d,f)=>je(l,d,f,{}),{skip:(l,d,f)=>je(l,d,f,{skip:!0}),only:(l,d,f)=>je(l,d,f,{only:!0})});function y(){return He}function L(){He.length=0,Se=void 0,Ee=void 0}function be(l,d){let f=Ee;Ee=l;try{return d()}finally{Ee=f}}function b(l){return l.groupName?`${l.groupName}/${l.name}`:l.name}function ue(l,d){return l.opts?.isolate??l.groupIsolate??d}function cn(l,d){return l.opts?.gc??l.groupGc??d}function ln(l,d){return l.opts?.cpu??l.groupCpu??d}function mn(l,d){return l.opts?.alloc??l.groupAlloc??d}function we(l,d){return l.opts?.peakMem??l.groupPeakMem??d}function me(l,d){if(!d)return[...l];let f=new RegExp(d);return l.filter((w)=>f.test(b(w)))}function x(l,d,f){let w=l.filter((W)=>W.only),N=w.length>0?w:l;if(w.length>0)process.stderr.write(`bench: ${w.length} task(s) selected by .only
|
|
15
|
-
`);let A=me(N,d);if(A.length===0)throw Error(`filter ${JSON.stringify(d)} matched zero of ${N.length} registered task(s) in ${f}.`);return A}import{heapStats as nt}from"bun:jsc";var tt=100;function pn(){try{return nt().heapSize}catch{return process.memoryUsage().heapUsed}}async function dn(l,d=tt){let f=Bun.nanoseconds();Bun.gc(!0);let w=pn();for(let W=0;W<d;W++){let G=l();if(p(G))await G}Bun.gc(!0);let N=pn(),A=Bun.nanoseconds()-f;return{memory:{origin:"heapStats",kind:"retained",bytesPerOp:Math.max(0,(N-w)/d)},diagnosticWallNs:A}}var Je=100,Be=2000,rt=2,ot=200,it=1e4,st=Be/2,at=20;function ut(l){let d=Be*rt*l/1000;return Math.min(it,Math.max(ot,d))}async function fn(l,d={}){let f=d.intervalUs??Je,w=ut(f)*1e6,N=async()=>{let H=Bun.nanoseconds();do{let re=l();if(p(re))await re}while(Bun.nanoseconds()-H<w)},{cpu:A,jit:W,diagnosticWallNs:G}=await ne(N,{intervalUs:f}),D=[],z=ct(A);if(z)D.push(z);let J=lt(W);if(J)D.push(J);return{cpu:A,jit:W,diagnosticWallNs:G,warnings:D}}function ct(l){let d=E(l);if(d>=st)return;return{code:"low-sample-count",message:`Only ${d} CPU sample(s) at ${l.samplingIntervalUs}\xB5s (target ${Be}); frame shares this thin move several points between runs. Lower --cpu-interval for more.`,data:{samples:d,target:Be,intervalUs:l.samplingIntervalUs}}}function lt(l){let{llint:d,baseline:f,dfg:w,ftl:N}=l.tiers,A=d+f+w+N;if(A===0)return;let W=d/A*100,G=f/A*100,D=w/A*100,z=N/A*100;if(W+G<=at)return;return{code:"jit-cold",message:`${(W+G).toFixed(1)}% of CPU samples were in the llint/baseline tiers: the JIT never warmed this task up.`,data:{llintPct:W,baselinePct:G,dfgPct:D,ftlPct:z}}}function P(l,d,f){let w=b(d);return Xe(l,w,{label:w,baseline:d.baseline,group:d.groupName,description:d.opts?.description,groupDescription:d.groupDescription,isolated:f,params:d.params,skipped:d.skipped})}async function j(l,d,f){let N=d.some((J)=>!J.skipped)&&f.noiseCheck!==!1?u():void 0,A=N?m(N):void 0,W=new Map,G=new Map;d.forEach((J,H)=>{if(J.groupName===void 0||J.skipped)return;if(!W.has(J.groupName))W.set(J.groupName,H);G.set(J.groupName,H)});let D=[],z=[];for(let J=0;J<d.length;J++){let H=d[J],re=P(l,H,f.markIsolated);if(D.push(re),H.skipped)continue;let ae=H.groupName!==void 0&&W.get(H.groupName)===J,ye=H.groupName!==void 0&&G.get(H.groupName)===J;if(ae&&H.groupBefore)await H.groupBefore();if(H.opts?.before)await H.opts.before();let oe={budgetMs:H.opts?.budgetMs??f.budgetMs,samples:H.opts?.samples??f.samples,minSamples:H.opts?.minSamples??f.minSamples,warmup:f.warmup,gc:cn(H,f.gc??!1)},le=await un(H.fn,oe);if(z.push(C({workload:re,configFingerprint:i({budgetMs:oe.budgetMs??null,samples:oe.samples??null,minSamples:oe.minSamples??null,gc:oe.gc??!1}),trials:le.trials,timing:le.timing,warnings:A&&z.length===0?[...le.warnings,A]:le.warnings})),ln(H,f.cpu??!1)){let ke=f.cpuIntervalUs??Je,xe=await fn(H.fn,{intervalUs:ke});z.push(h({workload:re,phase:"cpu",configFingerprint:i({cpu:!0,intervalUs:ke}),diagnosticWallNs:xe.diagnosticWallNs,cpu:xe.cpu,jit:xe.jit,warnings:xe.warnings,artifacts:[]}))}if(mn(H,f.alloc??!1)){let ke=await dn(H.fn);z.push(h({workload:re,phase:"memstats",configFingerprint:i({alloc:!0}),diagnosticWallNs:ke.diagnosticWallNs,memory:ke.memory,warnings:[],artifacts:[]}))}if(H.opts?.after)await H.opts.after();if(ye&&H.groupAfter)await H.groupAfter()}return s(D,z,N)}
|
|
16
|
-
export{g,e,F,M,n,E,k,q,v,t,K,de,T,Y,c,r,X,Z,B,pe,Q,R,S,s,_,fe,C,h,ge,he,i,I,ee,a,O,o,u,m,ne,te,ve,p,ce,Te,$e,y,L,be,b,ue,we,me,x,P,j};
|
package/chunk-t6q9jbb6.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{g,e,F,M,n,E,k,q,v,t,K,de,T,Y,c,r,X,Z,B,pe,Q,R,s,_,fe,C,h,he,i,I,o,u,m,ne,y,be,x,j}from"./chunk-cqy5fzae.js";function ln(a,b,p){let P=a[0];if(P==="bun"||P?.endsWith("/bun"))return{argv:[P,...b,...a.slice(1)],env:p};return{argv:a,env:{...process.env,...p,BUN_OPTIONS:b.join(" ")}}}function kt(a){return a.startsWith("file://")?a.slice(7):a}function pn(a,b,p){let P=a.nodes,S=P.length,ee=new Map,L=[],te=new Map,O=new Int32Array(S);for(let Ce=0;Ce<S;Ce++){let ve=P[Ce],$e=ve.callFrame,Ne=kt($e.url),Ue=ee.get($e.functionName);if(Ue===void 0)Ue=new Map,ee.set($e.functionName,Ue);let Oe=Ue.get(Ne);if(Oe===void 0)Oe=L.length,Ue.set(Ne,Oe),L.push({key:e("fr",$e.functionName,Ne),name:$e.functionName,url:Ne||void 0,line:$e.lineNumber>=0?$e.lineNumber:void 0,col:$e.columnNumber>=0?$e.columnNumber:void 0});O[Ce]=Oe,te.set(ve.id,Ce)}let me=Array(S);for(let Ce=0;Ce<S;Ce++){let ve=P[Ce];me[Ce]={id:ve.id,frameIx:O[te.get(ve.id)],children:ve.children??[]}}let we=new Float64Array(S),ue=new Float64Array(S),{samples:ge,timeDeltas:ce}=a;for(let Ce=0;Ce<ge.length;Ce++){let ve=te.get(ge[Ce]);if(ve===void 0)continue;we[ve]+=ce[Ce]??0,ue[ve]+=1}let Re=new Int32Array(S).fill(-1);for(let Ce=0;Ce<S;Ce++){let ve=P[Ce].children;if(!ve)continue;for(let $e of ve){let Ne=te.get($e);if(Ne!==void 0)Re[Ne]=Ce}}let Ie=[],Te=[];for(let Ce=S-1;Ce>=0;Ce--)if(Re[Ce]===-1)Te.push(Ce);while(Te.length>0){let Ce=Te.pop();Ie.push(Ce);let ve=P[Ce].children;if(!ve)continue;for(let $e of ve){let Ne=te.get($e);if(Ne!==void 0&&Re[Ne]===Ce)Te.push(Ne)}}let Be=new Float64Array(S);for(let Ce=Ie.length-1;Ce>=0;Ce--){let ve=Ie[Ce];Be[ve]+=we[ve];let $e=Re[ve];if($e>=0)Be[$e]+=Be[ve]}let Fe=Array(L.length),De=[];for(let Ce=0;Ce<S;Ce++){let ve=me[Ce].frameIx,$e=Fe[ve];if($e)$e.selfUs+=we[Ce],$e.totalUs+=Be[Ce],$e.samples+=ue[Ce];else{let Ne={frameIx:ve,selfUs:we[Ce],totalUs:Be[Ce],samples:ue[Ce]};Fe[ve]=Ne,De.push(Ne)}}return{origin:b,samplingIntervalUs:p,frames:L,nodes:me,totals:De.sort((Ce,ve)=>ve.selfUs-Ce.selfUs),samples:{nodeIds:a.samples,timeDeltasUs:a.timeDeltas}}}async function Fn(a){let b=`${a.artifactDir}/${a.fileName}`,{argv:p,env:P}=ln(a.argv,["--cpu-prof","--cpu-prof-dir",a.artifactDir,"--cpu-prof-name",a.fileName,"--cpu-prof-interval",String(a.intervalUs)],a.env),S=Bun.nanoseconds(),L=await Bun.spawn(p,{cwd:a.cwd,env:P,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,te=Bun.nanoseconds()-S,O=Bun.file(b);if(!await O.exists())return{diagnosticWallNs:te,exitCode:L,warnings:[{code:"artifact-missing",message:`Expected a .cpuprofile at ${b} after exit ${L}, found nothing. The workload's argv[0] must be a \`bun\` binary for CPU capture.`,data:{artifactPath:b,argv:a.argv}}]};let me=await O.json(),we=pn(me,"cpu-prof",a.intervalUs),ue=me.samples.length===0?[{code:"empty-profile",message:"CPU capture produced zero samples."}]:[];return{diagnosticWallNs:te,exitCode:L,artifactPath:b,cpu:we,warnings:ue}}function Bn(a){let{node_fields:p,node_types:P}=a.snapshot.meta,S=p.indexOf("type"),ee=p.indexOf("self_size"),L=p.length,te=P[0];if(S===-1||ee===-1||!Array.isArray(te))return{origin:"heap-prof",typeCounts:[],objectCount:a.snapshot.node_count};let O=te.length,me=Array(O),we=new Map,ue=[],ge=0,ce=a.nodes,Re=ce.length;for(let De=0;De<Re;De+=L){let Ce=ce[De+S],ve=ce[De+ee]??0;ge+=ve;let $e;if(Ce>=0&&Ce<O){if($e=me[Ce],$e===void 0)$e={type:te[Ce],count:0,bytes:0},me[Ce]=$e,ue.push($e)}else{let Ne=`unknown(${Ce})`;if($e=we.get(Ne),$e===void 0)$e={type:Ne,count:0,bytes:0},we.set(Ne,$e),ue.push($e)}$e.count++,$e.bytes+=ve}let Ie=ue.sort((De,Ce)=>Ce.count-De.count),Te=Ie.slice(0,20),Be=Ie.slice(20),Fe=Te.map(({type:De,count:Ce,bytes:ve})=>({type:De,count:Ce,retainedBytes:ve}));if(Be.length>0){let De=0,Ce=0;for(let ve of Be)De+=ve.count,Ce+=ve.bytes;Fe.push({type:"other",count:De,retainedBytes:Ce})}return{origin:"heap-prof",heapSizeBytes:ge,objectCount:a.snapshot.node_count,typeCounts:Fe}}async function An(a){let b=`${a.artifactDir}/${a.fileName}`,{argv:p,env:P}=ln(a.argv,["--heap-prof","--heap-prof-dir",a.artifactDir,"--heap-prof-name",a.fileName],a.env),S=Bun.nanoseconds(),L=await Bun.spawn(p,{cwd:a.cwd,env:P,stdout:"ignore",stderr:"ignore",stdin:"ignore"}).exited,te=Bun.nanoseconds()-S,O=Bun.file(b);if(!await O.exists())return{diagnosticWallNs:te,exitCode:L,warnings:[{code:"artifact-missing",message:`Expected a heap snapshot at ${b} after exit ${L}, found nothing. The workload's argv[0] must be a \`bun\` binary for heap capture.`,data:{artifactPath:b,argv:a.argv}}]};let me=await O.json(),we=Bn(me);return{diagnosticWallNs:te,exitCode:L,artifactPath:b,heap:we,warnings:[]}}var Pt=1000;async function Un(a,b={}){let p=b.intervalUs??Pt,{Session:P}=await import("inspector/promises"),S=new P;S.connect();let ee=Bun.nanoseconds();try{await S.post("Profiler.enable"),await S.post("Profiler.setSamplingInterval",{interval:p}),await S.post("Profiler.start");let L=await a(),{profile:te}=await S.post("Profiler.stop"),O=Bun.nanoseconds()-ee,me=pn(te,"inspector",p);return{result:L,cpu:me,diagnosticWallNs:O}}finally{S.disconnect()}}function $t(a){let b=a>>>0;return()=>{b=b+1831565813|0;let p=Math.imul(b^b>>>15,1|b);return p=p+Math.imul(p^p>>>7,61|p)^p,((p^p>>>14)>>>0)/4294967296}}var fn=2000,xt=2000;function Mt(a){let b=a.length,p=b>>1;return b%2===0?(a[p-1]+a[p])/2:a[p]}function jn(a,b,p){if(a.length<=p)return a;let P=[...a];for(let S=0;S<p;S++){let ee=S+Math.floor(b()*(P.length-S)),L=P[S];P[S]=P[ee],P[ee]=L}return P.slice(0,p)}class Mn{sorted;rankOf;counts;n;constructor(a){let b=a.length,p=new Uint32Array(b);for(let P=0;P<b;P++)p[P]=P;p.sort((P,S)=>a[P]-a[S]),this.sorted=new Float64Array(b),this.rankOf=new Uint32Array(b);for(let P=0;P<b;P++)this.sorted[P]=a[p[P]],this.rankOf[p[P]]=P;this.n=b,this.counts=new Uint32Array(b)}resampleMedian(a){let{n:b,counts:p,sorted:P,rankOf:S}=this;p.fill(0);for(let me=0;me<b;me++)p[S[Math.floor(a()*b)]]++;let ee=b+1>>1,L=b%2===0?ee+1:ee,te=0,O=-1;for(let me=0;me<b;me++){if(te+=p[me],O<0&&te>=ee)O=me;if(te>=L)return O===me?P[me]:(P[O]+P[me])/2}return P[b-1]}}function Rt(a,b){let p=new Float64Array(a.length+b.length+1);return p.set(a),p[a.length]=Number.NaN,p.set(b,a.length+1),Bun.hash.crc32(p)}function _n(a,b,p={}){let P=p.seed??Rt(a,b),S=$t(P),ee=p.iterations??xt,L=a.length>fn||b.length>fn,te=new Mn(jn(a,S,fn)),O=new Mn(jn(b,S,fn)),me=Mt(te.sorted),we=new Float64Array(ee);for(let ue=0;ue<ee;ue++){let ge=te.resampleMedian(S),ce=O.resampleMedian(S);we[ue]=me===0?ce-ge===0?0:1/0:(ce-ge)/me*100}return we.sort(),{ci95:[r(we,0.025),r(we,0.975)],seed:P,data:{subsampled:L,iterations:ee}}}function vt(a){let b=a<0?-1:1,p=Math.abs(a),P=0.254829592,S=-0.284496736,ee=1.421413741,L=-1.453152027,te=1.061405429,O=0.3275911,me=1/(1+0.3275911*p),we=1-((((1.061405429*me+-1.453152027)*me+1.421413741)*me+-0.284496736)*me+0.254829592)*me*Math.exp(-p*p);return b*we}function Ct(a){return 0.5*(1+vt(a/Math.SQRT2))}function Ln(a,b){let p=a.length,P=b.length,S=p+P,ee=new Float64Array(a),L=new Float64Array(b);ee.sort(),L.sort();let te=0,O=0,me=0,we=0,ue=0;while(me<p||we<P){let Be=we>=P||me<p&&ee[me]<=L[we]?ee[me]:L[we],Fe=0;while(me<p&&ee[me]===Be)Fe++,me++;let De=0;while(we<P&&L[we]===Be)De++,we++;let Ce=Fe+De,ve=ue+(Ce+1)/2;if(te+=Fe*ve,Ce>1)O+=Ce**3-Ce;ue+=Ce}let ge=te-p*(p+1)/2,ce=p*P/2,Re=Math.sqrt(p*P*(S+1-O/(S*(S-1)))/12),Ie=Re===0?0:(ge-ce)/Re,Te=Math.min(1,Math.max(0,2*(1-Ct(Math.abs(Ie)))));return{u:ge,z:Ie,pValue:Te}}var f={timingPct:5,frameSelfPct:10,heapTypePct:10,minFrameSelfUs:1000,alpha:0.01,bootstrapIterations:2000},Rn=5;function gn(a,b){if(a===0)return b===0?0:1/0;return(b-a)/a*100}function Vn(a){let b=new Map;for(let p of a.measurements){let P=`${p.workloadId}\x00${p.phase}`;if(!b.has(P))b.set(P,p)}return b}function Tt(a,b,p){return{base:a,cand:b,baseByPhase:Vn(a),candByPhase:Vn(b),candWorkloads:new Map(b.workloads.map((P)=>[P.id,P])),environmentMismatch:It(a,b),effectiveTimingPct:Math.max(p.timingPct,a.environment?.noise.floorPct??0,b.environment?.noise.floorPct??0)}}function It(a,b){let p=[];if(a.platform.os!==b.platform.os)p.push({field:"platform.os",base:a.platform.os,cand:b.platform.os});if(a.platform.arch!==b.platform.arch)p.push({field:"platform.arch",base:a.platform.arch,cand:b.platform.arch});if(a.bunVersion!==b.bunVersion)p.push({field:"bunVersion",base:a.bunVersion,cand:b.bunVersion});if(a.environment&&b.environment){if(a.environment.cpuModel!==b.environment.cpuModel)p.push({field:"cpuModel",base:a.environment.cpuModel,cand:b.environment.cpuModel});if(a.environment.cores!==b.environment.cores)p.push({field:"cores",base:a.environment.cores,cand:b.environment.cores})}if(p.length===0)return;return{code:"environment-mismatch",message:`Base and candidate were measured on different environments (${p.map((P)=>P.field).join(", ")}); a timing delta may reflect that instead of the code change.`,data:{fields:p}}}function St(a){let b=[];for(let P of a){if(!P.timing)continue;let S=1+P.timing.medianDeltaPct/100;if(Number.isFinite(S)&&S>0)b.push(Math.log(S))}if(b.length===0)return null;let p=b.reduce((P,S)=>P+S,0)/b.length;return(Math.exp(p)-1)*100}function re(a,b,p=f){let P=Tt(a,b,p);return{effectiveTimingPct:P.effectiveTimingPct,compare:(S)=>Ot(P,S,p),unmatched(){let S=new Set(a.workloads.map((ee)=>ee.id));return{baseOnly:a.workloads.filter((ee)=>!P.candWorkloads.has(ee.id)),candOnly:b.workloads.filter((ee)=>!S.has(ee.id))}}}}function se(a,b){let p=0,P=0,S=0;for(let ee of a){if(!ee.timing)continue;if(ee.timing.verdict==="regressed")p++;else if(ee.timing.verdict==="improved")P++;else S++}return{matched:a.length,regressed:p,improved:P,unchanged:S,geomeanPct:St(a),effectiveTimingPct:b,verdict:a.some((ee)=>ee.verdict==="fail")?"fail":"pass"}}function H(a,b,p=f){let P=re(a,b,p),S=[];for(let ee of a.workloads){let L=P.compare(ee.id);if(L)S.push(L)}return{comparisons:S,unmatched:P.unmatched(),summary:se(S,P.effectiveTimingPct)}}function Ot(a,b,p){let{baseByPhase:P,candByPhase:S,effectiveTimingPct:ee}=a,L=P.get(`${b}\x00timing`),te=S.get(`${b}\x00timing`),O=P.get(`${b}\x00cpu`),me=S.get(`${b}\x00cpu`),we=P.get(`${b}\x00heap`),ue=S.get(`${b}\x00heap`),ge=a.candWorkloads.get(b),ce=L?.id??O?.id??we?.id,Re=te?.id??me?.id??ue?.id??ge?.id;if(!ce||!Re)return;let Ie=!1,Te=[];if(a.environmentMismatch)Te.push(a.environmentMismatch);let Be;if(L?.timing&&ge?.skipped&&!te?.timing)Be={medianDeltaPct:0,meanDeltaPct:0,verdict:"unchanged"},Te.push({code:"skipped",message:"Candidate has no timing measurement for this workload (task.skip()); treated as unchanged.",data:{workloadId:b}});else if(L?.timing&&te?.timing){let Ce=L.timing.samples,ve=te.timing.samples,$e=gn(L.timing.median,te.timing.median),Ne=gn(L.timing.mean,te.timing.mean),Ue=(Oe,Ae)=>{if(Oe>ee)return"regressed";if(Ae<-ee)return"improved";return"unchanged"};if(Ce.length<Rn||ve.length<Rn){let Oe=Ue($e,$e);if(Oe==="regressed")Ie=!0;Be={medianDeltaPct:$e,meanDeltaPct:Ne,verdict:Oe},Te.push({code:"thin-comparison",message:`Only ${Ce.length} baseline / ${ve.length} candidate sample(s); falling back to a point-estimate threshold instead of a bootstrap CI and Mann-Whitney test (needs ${Rn}+ per side).`,data:{baseSamples:Ce.length,candSamples:ve.length}})}else{let Oe=_n(Ce,ve,{iterations:p.bootstrapIterations}),Ae=Ln(Ce,ve),_e=Ae.pValue<p.alpha?Ue(Oe.ci95[0],Oe.ci95[1]):"unchanged";if(_e==="regressed")Ie=!0;Be={medianDeltaPct:$e,meanDeltaPct:Ne,ci95:Oe.ci95,pValue:Ae.pValue,seed:Oe.seed,verdict:_e}}}let Fe;if(O?.cpu&&me?.cpu){let Ce=new Map(O.cpu.totals.map((Oe)=>[O.cpu.frames[Oe.frameIx].key,Oe])),ve=new Map(me.cpu.totals.map((Oe)=>[me.cpu.frames[Oe.frameIx].key,Oe])),$e=new Map(O.cpu.frames.map((Oe)=>[Oe.key,Oe.name])),Ne=new Map(me.cpu.frames.map((Oe)=>[Oe.key,Oe.name]));Fe=[...new Set([...Ce.keys(),...ve.keys()])].map((Oe)=>{let Ae=Ce.get(Oe)?.selfUs??0,_e=ve.get(Oe)?.selfUs??0;return{frameKey:Oe,name:Ne.get(Oe)??$e.get(Oe)??Oe,baseSelfUs:Ae,candSelfUs:_e,deltaPct:gn(Ae,_e)}}).sort((Oe,Ae)=>Math.abs(Ae.deltaPct)-Math.abs(Oe.deltaPct));for(let Oe of Fe)if((Oe.baseSelfUs>=p.minFrameSelfUs||Oe.candSelfUs>=p.minFrameSelfUs)&&Oe.deltaPct>p.frameSelfPct)Ie=!0}let De;if(we?.heap&&ue?.heap){let Ce=new Map(we.heap.typeCounts.map((Ne)=>[Ne.type,Ne])),ve=new Map(ue.heap.typeCounts.map((Ne)=>[Ne.type,Ne]));De=[...new Set([...Ce.keys(),...ve.keys()])].map((Ne)=>{let Ue=Ce.get(Ne),Oe=ve.get(Ne);return{type:Ne,baseCount:Ue?.count??0,candCount:Oe?.count??0,baseBytes:Ue?.retainedBytes,candBytes:Oe?.retainedBytes,deltaPct:gn(Ue?.count??0,Oe?.count??0)}}).sort((Ne,Ue)=>Math.abs(Ue.deltaPct)-Math.abs(Ne.deltaPct));for(let Ne of De)if(Ne.deltaPct>p.heapTypePct)Ie=!0}return{id:e("cmp",ce,Re),baselineMeasurementId:ce,candidateMeasurementId:Re,timing:Be,...Te.length>0&&{warnings:Te},frames:Fe,heapTypes:De,thresholds:{...p,effectiveTimingPct:ee},verdict:Ie?"fail":"pass"}}var Ze="node_modules/.cache/ostia",Dt=".ostia/baselines",Nt={warmup:3,outDir:Ze,baselineDir:Dt,baseline:"main",thresholds:f,workloads:[]};class N extends Error{}var Et={runs:"samples"};function zn(a,b){for(let[p,P]of Object.entries(Et))if(p in a)throw new N(`${b}: "${p}" was renamed to "${P}".`);return{...Nt,...a,thresholds:{...f,...a.thresholds??{}}}}async function Hn(a){let b=Bun.file(a);if(!await b.exists())return;let p;try{p=await b.json()}catch(P){throw new N(`${a}: ${P instanceof Error?P.message:String(P)}`)}return zn(p,a)}async function Gn(a){let b=a.startsWith("/")?a:`${process.cwd()}/${a}`;if(!await Bun.file(b).exists())return;let p;try{p=await import(b)}catch(P){throw new N(`${a}: ${P instanceof Error?P.message:String(P)}`)}return zn(p.default??{},a)}async function W(a){if(a!==void 0)return a.endsWith(".ts")?Gn(a):Hn(a);return await Gn("ostia.config.ts")??Hn("ostia.config.json")}function l(a,b){return`${a.baselineDir}/${b??a.baseline}.json`}async function oe(){if(await Bun.file("ostia.config.ts").exists())return"ostia.config.ts";if(await Bun.file("ostia.config.json").exists())return"ostia.config.json";return}var Wt=10,Ft=3000000000,Bt=3;function vn(a){if(a.timeSource)Z(a.timeSource);let b=a.warmup??Bt,p=a.samples,P=a.minSamples??Wt,S=p??P,ee=p!==void 0?0:a.budgetMs!==void 0?a.budgetMs*1e6:Ft,L=a.timeSource!==void 0,te=a.ignoreExitCodes??[],O=new Set(te),me=[],we=0,ue=0,ge=!1,ce;function Re(){if(ge)return!0;if(p!==void 0)return ue>=p;return ue>=S&&we>=ee}async function Ie(Te,Be){if(a.prepare)await Q(a.prepare,{phase:Te,index:Be},{cwd:a.cwd,env:a.env,timeoutMs:a.timeoutMs,signal:a.signal});return pe(a)}return{async warmup(){for(let Te=0;Te<b;Te++){if(a.signal?.aborted)return;await Ie("warmup",Te)}},async step(){if(Re()||a.signal?.aborted)return!1;let Te=await Ie("timing",ue);if(a.signal?.aborted)return!1;if(Te.timeSourceNoMatch)ce??=Te.timeSourceMissOutput;if(me.push({i:ue,wallNs:Te.wallNs,exitCode:Te.exitCode??void 0,userNs:Te.userNs,systemNs:Te.systemNs,maxRssBytes:Te.maxRssBytes,...Te.reportedNs!==void 0&&{reportedNs:Te.reportedNs},...Te.timedOut?{timedOut:!0}:{},...Te.timeSourceNoMatch?{timeSourceNoMatch:!0}:{}}),we+=Te.wallNs,ue++,Te.exitCode!==null&&Te.exitCode!==0&&!O.has(Te.exitCode))ge=!0;return!0},done:Re,result(){let Te=me.filter(($e)=>!$e.timedOut&&!$e.timeSourceNoMatch),Be=Te.map(($e)=>L?$e.reportedNs:$e.wallNs),Fe=[],De=me.filter(($e)=>$e.timedOut).length;if(De>0)Fe.push({code:"timeout",message:`${De} of ${me.length} trial(s) timed out after ${a.timeoutMs}ms.`,data:{timeoutMs:a.timeoutMs,trials:De}});let Ce=me.filter(($e)=>$e.timeSourceNoMatch).length;if(Ce>0&&a.timeSource){let{pattern:$e}=a.timeSource;Fe.push({code:"time-source-no-match",message:`${Ce} of ${me.length} trial(s) didn't match the timeSource pattern.`,data:{pattern:typeof $e==="string"?$e:$e.source,trials:Ce,...ce!==void 0&&{output:ce}}})}if(Be.length===0)return{trials:me,warnings:Fe};let ve=c(Be);return Fe.push(...X(ve,Te.map(($e)=>$e.exitCode),L?"reported":"subprocess",te)),{trials:me,timing:ve,warnings:Fe}}}}async function Cn(a){await a.warmup();while(await a.step());}async function le(a){let b=vn(a);return await Cn(b),b.result()}function J(a,b=[]){if(!a.timing)return!0;let p=new Set(b);return a.trials.some((P)=>P.exitCode!==void 0&&P.exitCode!==0&&!p.has(P.exitCode))}function hn(a,b){let p={samples:b.samples,minSamples:b.minSamples};for(let[P,S]of Object.entries(p))if(S!==void 0&&(!Number.isFinite(S)||S<1))throw RangeError(`${a}: ${P} must be >= 1, got ${S}`);if(b.budgetMs!==void 0&&!Number.isFinite(b.budgetMs))throw RangeError(`${a}: budgetMs must be finite, got ${b.budgetMs}`)}import{appendFileSync as At,existsSync as Tn,lstatSync as Ut,realpathSync as jt,renameSync as _t}from"fs";import{isAbsolute as Kn,relative as Lt,sep as Vt}from"path";class A extends Error{}var Ht=new URL("./ab-runner.ts",import.meta.url).pathname,cn={base:"HEAD",rounds:15,thresholdPct:10,geomeanThresholdPct:1.5,confirm:2};function Jn(a,b){let p=Bun.spawnSync(["git",...a],{cwd:b,stdout:"pipe",stderr:"ignore"});return p.success?p.stdout.toString().trim():void 0}var Gt=`
|
|
3
|
-
;globalThis.__ostia_ab_base__;
|
|
4
|
-
`,zt="**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}";async function Kt(a){for await(let b of new Bun.Glob(zt).scan({cwd:a,dot:!0,absolute:!0})){if(/\.d\.[mc]?ts$/.test(b)||!Ut(b).isFile())continue;At(b,Gt)}}async function Jt(a,b,p){if(Tn(b))return;let P=`${b}.tmp-${process.pid}`;await Bun.spawn(["rm","-rf",P]).exited,await Bun.spawn(["mkdir","-p",P]).exited;let S=Bun.spawn(["git","archive","--format=tar",a],{cwd:p,stdout:"pipe",stderr:"pipe"}),ee=Bun.spawn(["tar","-x","-C",P],{stdin:S.stdout,stderr:"pipe"}),[L,te]=await Promise.all([S.exited,ee.exited]);if(L!==0||te!==0){let O=await new Response(L!==0?S.stderr:ee.stderr).text();throw await Bun.spawn(["rm","-rf",P]).exited,Error(`Could not extract ${a}: ${O.trim()}`)}await Kt(P);try{_t(P,b)}catch{await Bun.spawn(["rm","-rf",P]).exited}}function Yt(a){return r(Float64Array.from(a).sort(),0.5)}function qt(a){if(!a.repeats?.length)return a.medianRatio;return Yt([a.medianRatio,...a.repeats.map((b)=>b.medianRatio)])}function Qt(a,b){let p=a.map((te)=>te.paired).filter((te)=>te!==void 0),P=0;for(let te of p)P+=Math.log(qt(te));let S=p.length>0?(Math.exp(P/p.length)-1)*100:null,ee=p.filter((te)=>te.verdict==="regressed").length,L=p.filter((te)=>te.verdict==="improved").length;return{...b,matched:p.length,regressed:ee,improved:L,unchanged:p.length-ee-L,unconfirmed:p.filter((te)=>te.confirmed===!1).length,outputDiffers:p.filter((te)=>!te.sameOutput).length,geomeanPct:S,verdict:ee>0||S!==null&&S>b.geomeanThresholdPct?"fail":"pass"}}async function G(a){let b=a.base??cn.base,p=a.rounds??cn.rounds,P=a.thresholdPct??cn.thresholdPct,S=a.geomeanThresholdPct??cn.geomeanThresholdPct,ee=a.confirm??cn.confirm;if(!Number.isInteger(p)||p<3)throw RangeError(`ab: rounds must be an integer >= 3, got ${p}`);if(!Number.isInteger(ee)||ee<0)throw RangeError(`ab: confirm must be an integer >= 0, got ${ee}`);for(let[ve,$e]of Object.entries({thresholdPct:P,geomeanThresholdPct:S}))if(!Number.isFinite($e)||$e<0)throw RangeError(`ab: ${ve} must be >= 0, got ${$e}`);let L=a.cwd??process.cwd(),te=a.outDir??Ze,O=Kn(te)?te:`${L}/${te}`,me=`${O}/ab-tmp`,we=Jn(["rev-parse","--show-toplevel"],L);if(we===void 0)throw new A(`${L} is not inside a git repository.`);let ue=Jn(["rev-parse","--verify","--quiet",`${b}^{commit}`],L);if(ue===void 0)throw new A(`"${b}" is not a commit in ${we}.`);let ge=`${O}/ab/${ue}`;await Jt(ue,ge,L);let ce=a.noiseCheck===!1?void 0:u(),Re=(ve)=>Kn(ve)?ve:`${L}/${ve}`,Ie=a.suites.map(Re),Te=Ie.map((ve,$e)=>{if(!Tn(ve))throw Error(`Suite not found: ${a.suites[$e]}`);let Ne=Lt(we,jt(ve));if(Ne===".."||Ne.startsWith(`..${Vt}`))throw new A(`${a.suites[$e]} is outside ${we}.`);return Tn(`${ge}/${Ne}`)?`${ge}/${Ne}`:""}),Be=(a.preload??[]).map(Re),Fe=a.bunFlags??[],De=0,Ce=async(ve,$e={})=>{let Ne=`${me}/${e("ab-run",Ie[ve],De++)}.json`,Ue={filter:a.filter,rounds:p,thresholdPct:P,preload:Be,...$e},Oe=B(a.timeoutMs,a.signal),_e=await Bun.spawn(["bun",...Fe,Ht,Ie[ve],Te[ve],Ne,JSON.stringify(Ue)],{cwd:L,stdout:"inherit",stderr:"inherit",stdin:"ignore",...Oe.spawn}).exited;if(a.signal?.aborted)return;if(Oe.timedOut())throw Error(`A/B suite timed out after ${a.timeoutMs}ms: ${a.suites[ve]}`);if(_e!==0)throw Error(`A/B suite failed: ${a.suites[ve]} (runner exited ${_e})`);return o(Ne)};try{let ve=[],$e=[],Ne=new Map,Ue=[],Oe=[];for(let Se=0;Se<Ie.length;Se++){let Ee=await Ce(Se);if(!Ee)break;ve.push(...Ee.workloads),$e.push(...Ee.measurements);for(let Ve of Ee.measurements)Ne.set(Ve.workloadId,Se);Ue.push(...Ee.unmatched?.baseOnly??[]),Oe.push(...Ee.unmatched?.candOnly??[])}for(let Se of $e){let Ee=Se.paired;if(!Ee?.flagged||ee===0)continue;Ee.repeats=[];for(let Ve=0;Ve<ee&&!a.signal?.aborted;Ve++){let He=(await Ce(Ne.get(Se.workloadId),{workloadIds:[Se.workloadId]}))?.measurements[0]?.paired;if(!He)break;Ee.repeats.push({medianRatio:He.medianRatio,p25:He.p25,p75:He.p75,...He.flagged&&{flagged:He.flagged}})}Ee.confirmed=Ee.repeats.length===ee&&Ee.repeats.every((Ve)=>Ve.flagged===Ee.flagged),Ee.verdict=Ee.confirmed?Ee.flagged:"unchanged"}let Ae=ce&&m(ce);if(Ae&&$e.length>0)$e[0].warnings.push(Ae);if(a.signal?.aborted&&$e.length>0)$e[$e.length-1].warnings.push({code:"aborted",message:"Run was cancelled before it finished; this document holds whatever suites had already completed."});let _e=s(ve,$e,ce);return _e.unmatched={baseOnly:Ue,candOnly:Oe},_e.ab=Qt($e,{base:{ref:b,sha:ue},rounds:p,thresholdPct:P,geomeanThresholdPct:S}),_e}finally{await Bun.spawn(["rm","-rf",me]).exited}}async function V(a,b){let p=new Set;for(let P of a)for await(let S of new Bun.Glob(P).scan({cwd:b,absolute:!1}))p.add(S);return[...p].sort()}var In=new URL("./runner.ts",import.meta.url).pathname;function ie(){return Math.max(1,navigator.hardwareConcurrency||1)}async function U(a,b){return V(a,b)}function Xt(a){if(a===void 0)return;return a==="auto"?ie():a}async function z(a,b,p=process.cwd()){return{suites:a.suites.length>0?a.suites:b?.suites?await U(b.suites,p):[],budgetMs:a.budgetMs??b?.budgetMs,samples:a.samples??b?.samples,minSamples:a.minSamples??b?.minSamples,jobs:a.jobs??Xt(b?.jobs),gc:a.gc??b?.gc??!1,cpu:a.cpu??b?.cpu??!1,cpuIntervalUs:a.cpuIntervalUs??b?.cpuIntervalUs,alloc:a.alloc??b?.alloc??!1,peakMem:a.peakMem??b?.peakMem??!1,filter:a.filter??b?.filter,isolate:a.isolate??b?.isolate??!1,preload:a.preload.length>0?a.preload:b?.preload??[],bunFlags:a.bunFlags.length>0?a.bunFlags:b?.bunFlags??[],outDir:a.outDir??b?.outDir,noiseCheck:a.noiseCheck,timeoutMs:a.timeoutMs??b?.timeoutMs,cwd:p}}var Zt=3,er=16777216;async function D(a){hn("bench",a);let b=a.cwd??process.cwd(),p=a.outDir??Ze,P=`${p.startsWith("/")?p:`${b}/${p}`}/bench-tmp`,S=Math.max(1,Math.floor(a.jobs??1)),ee={budgetMs:a.budgetMs,samples:a.samples,minSamples:a.minSamples,gc:a.gc,cpu:a.cpu,cpuIntervalUs:a.cpuIntervalUs,alloc:a.alloc,peakMem:a.peakMem,noiseCheck:!1},L=a.noiseCheck===!1?void 0:u(),te=L?m(L):void 0,O=(ce)=>ce.startsWith("/")?ce:`${b}/${ce}`,me=a.suites.map(O),we=(a.preload??[]).map(O),ue=a.bunFlags??[],ge=async(ce,Re,Ie)=>{let Te=new Set,Be=0,Fe,De=async()=>{while(Fe===void 0&&!a.signal?.aborted&&Be<ce.length){let Ce=Be++;try{let ve=B(a.timeoutMs,a.signal),$e=Bun.spawn(ce[Ce],{cwd:b,...Ie&&{env:{...process.env,...Ie}},stdout:"inherit",stderr:"inherit",stdin:"ignore",...ve.spawn});Te.add($e);let Ne=await $e.exited;if(Te.delete($e),a.signal?.aborted)return;if(ve.timedOut())throw Error(`Bench suite timed out after ${a.timeoutMs}ms: ${Re(Ce)}`);if(Ne!==0)throw Error(`Bench suite failed: ${Re(Ce)} (runner exited ${Ne})`)}catch(ve){Fe??=ve instanceof Error?ve:Error(String(ve));for(let $e of Te)$e.kill()}}};if(await Promise.all(Array.from({length:Math.min(S,ce.length)},De)),Fe)throw Fe};try{let ce=me.map((Se)=>`${P}/${e("bench-plan",Se)}.json`),Re=me.map((Se)=>`${P}/${e("bench-primary",Se)}.json`),Ie=me.map((Se,Ee)=>["bun",...ue,In,Se,Re[Ee],JSON.stringify({...ee,filter:a.filter,isolate:a.isolate,preload:we,planPath:ce[Ee]})]);await ge(Ie,(Se)=>a.suites[Se]);let Te=await Promise.all(ce.map(async(Se)=>{if(!await Bun.file(Se).exists())return[];let{tasks:Ee}=await Bun.file(Se).json();return Ee})),Be=await Promise.all(Re.map(async(Se)=>await Bun.file(Se).exists()?o(Se):void 0)),Fe=[];for(let Se=0;Se<Te.length;Se++)for(let Ee of Te[Se])if(Ee.isolate)Fe.push({suiteIndex:Se,taskIds:[Ee.id]});let De=Fe.map((Se,Ee)=>`${P}/${e("bench-item",me[Se.suiteIndex],Ee)}.json`),Ce=Fe.map((Se,Ee)=>["bun",...ue,In,me[Se.suiteIndex],De[Ee],JSON.stringify({...ee,taskIds:Se.taskIds,preload:we,markIsolated:!0})]);await ge(Ce,(Se)=>a.suites[Fe[Se].suiteIndex]);let ve=await Promise.all(De.map(async(Se)=>await Bun.file(Se).exists()?o(Se):void 0)),$e=[];for(let Se=0;Se<Te.length;Se++)for(let Ee of Te[Se]){if(!Ee.peakMem)continue;for(let Ve=0;Ve<Zt;Ve++)$e.push({suiteIndex:Se,workloadId:Ee.workloadId})}let Ne=$e.map((Se,Ee)=>`${P}/${e("bench-peak",me[Se.suiteIndex],Ee)}.json`);await ge($e.map((Se,Ee)=>["bun",...ue,In,me[Se.suiteIndex],Ne[Ee],JSON.stringify({filter:a.filter,preload:we,peakMemFor:Se.workloadId})]),(Se)=>a.suites[$e[Se].suiteIndex],{OSTIA_PEAK_MEM:"1"});let Ue=new Map;for(let Se=0;Se<$e.length;Se++){let Ee=Bun.file(Ne[Se]);if(!await Ee.exists())continue;let Ve=$e[Se].workloadId,ze=Ue.get(Ve)??[];ze.push(await Ee.json()),Ue.set(Ve,ze)}let Oe=(Se)=>{let Ee=Ue.get(Se.id);if(!Ee?.length)return[];let Ve=(je)=>r(Float64Array.from(je).sort(),0.5),ze=Ve(Ee.map((je)=>je.peakBytes)),He=Math.max(...Ee.map((je)=>je.slackBytes)),We=He>=er&&He>ze/4?[{code:"peak-hidden",message:`Before the call, earlier work in the process had freed up to ${k(He)} the allocator still held (module-scope setup or before hooks that allocate), which the call could reuse without RSS rising: this reading can be low by up to that much. Skip that work when process.env.OSTIA_PEAK_MEM is set.`,data:{slackBytes:He,processes:Ee.length}}]:[];return[h({workload:Se,phase:"memstats",configFingerprint:i({peakMem:!0}),diagnosticWallNs:Ve(Ee.map((je)=>je.wallNs)),memory:{origin:"resourceUsage",kind:"peak",peakBytes:ze},warnings:We,artifacts:[]})]},Ae=[],_e=[];for(let Se=0;Se<Te.length;Se++){let Ee=Be[Se];if(!Ee)continue;let Ve=new Map;for(let Ke of Ee.measurements){let We=Ve.get(Ke.workloadId)??[];We.push(Ke),Ve.set(Ke.workloadId,We)}let ze=0,He=new Map;Fe.forEach((Ke,We)=>{let je=ve[We];if(Ke.suiteIndex===Se&&je)He.set(Ke.taskIds[0],je)});for(let Ke of Te[Se])if(Ke.isolate){let We=He.get(Ke.id);if(!We)continue;let je=We.workloads[0];Ae.push(je);for(let Ye of We.measurements)if(Ye.workloadId===je.id)_e.push(Ye);_e.push(...Oe(je))}else{let We=Ee.workloads[ze];Ae.push(We),ze++;for(let je of Ve.get(We.id)??[])_e.push(je);_e.push(...Oe(We))}}if(te&&_e.length>0)_e[0].warnings=[..._e[0].warnings,te];if(a.signal?.aborted&&_e.length>0){let Se=_e[_e.length-1];Se.warnings=[...Se.warnings,{code:"aborted",message:"Run was cancelled before it finished; this document holds whatever suites/tasks had already completed."}]}return s(Ae,_e,L)}finally{await Bun.spawn(["rm","-rf",P]).exited}}function ke(a,b,p=8){if(p<=1)throw RangeError(`range: multiplier must be > 1, got ${p}`);if(a<=0)throw RangeError(`range: start must be > 0, got ${a}`);let P=[];for(let S=a;S<=b;S*=p)P.push(S);if(!P.includes(b))P.push(b);return P}function Xe(a,b){if(b){let p=a.measurements.find((P)=>P.id===b);return p?.cpu?[p]:[]}return a.measurements.filter((p)=>p.phase==="cpu"&&p.cpu)}function nn(a){let b=a.nodes,p=b.length,P=nr(a),S=new Int32Array(p).fill(-1);for(let O=0;O<p;O++)for(let me of b[O].children){let we=P(me);if(we!==-1)S[we]=O}let ee=[];for(let O=0;O<p;O++)if(S[O]===-1)ee.push(O);let L=[],te=[];for(let O=ee.length-1;O>=0;O--)te.push(ee[O]);while(te.length>0){let O=te.pop();L.push(O);for(let me of b[O].children){let we=P(me);if(we!==-1&&S[we]===O)te.push(we)}}return{count:p,indexOf:P,parentIx:S,roots:ee,order:L}}function nr(a){let b=a.nodes,p=b.length,P=1/0,S=-1/0,ee=!0;for(let te=0;te<p;te++){let O=b[te].id;if(!Number.isInteger(O)){ee=!1;break}if(O<P)P=O;if(O>S)S=O}if(ee&&p>0&&S-P<p*4+64){let te=S-P+1,O=new Int32Array(te).fill(-1);for(let me=0;me<p;me++)O[b[me].id-P]=me;return(me)=>{let we=me-P;return we>=0&&we<te?O[we]:-1}}let L=new Map;for(let te=0;te<p;te++)L.set(b[te].id,te);return(te)=>L.get(te)??-1}function Yn(a,b){let{count:p,indexOf:P,parentIx:S,order:ee}=b,L=new Float64Array(p),te=new Float64Array(p),O=a.samples?.nodeIds??[],me=a.samples?.timeDeltasUs??[];for(let ue=0;ue<O.length;ue++){let ge=P(O[ue]);if(ge===-1)continue;L[ge]+=me[ue]??0,te[ge]+=1}let we=new Float64Array(p);for(let ue=ee.length-1;ue>=0;ue--){let ge=ee[ue];we[ge]+=L[ge];let ce=S[ge];if(ce>=0)we[ce]+=we[ge]}return{selfUs:L,totalUs:we,samples:te}}var qn={name:"collapsed",async render(a,b={}){return{files:Xe(a,b.measurementId).map((S)=>{let ee=S.cpu,{nodes:L,frames:te}=ee,O=nn(ee),me=Array(O.count);for(let Re of O.order){let Ie=te[L[Re].frameIx].name||"(anonymous)",Te=O.parentIx[Re];me[Re]=Te===-1?Ie:`${me[Te]};${Ie}`}let we=new Float64Array(O.count),ue=[],ge=ee.samples?.nodeIds??[];for(let Re=0;Re<ge.length;Re++){let Ie=O.indexOf(ge[Re]);if(Ie===-1)continue;if(we[Ie]++===0)ue.push(Ie)}let ce=Array(ue.length);for(let Re=0;Re<ue.length;Re++){let Ie=ue[Re];ce[Re]=`${me[Ie]} ${we[Ie]}`}return{path:`${S.id}.collapsed.txt`,content:ce.join(`
|
|
5
|
-
`)+(ce.length>0?`
|
|
6
|
-
`:"")}})}}};var Qn={name:"cpuprofile",async render(a,b={}){let p=Xe(a,b.measurementId),P=[],S=[];for(let ee of p){if(ee.cpu?.origin!=="cpu-prof"&&ee.cpu?.origin!=="inspector"){S.push(`${ee.id} (origin ${ee.cpu?.origin??"unknown"} has no .cpuprofile artifact to pass through)`);continue}let L=ee.artifacts.find((O)=>O.kind==="cpuprofile");if(!L){S.push(`${ee.id} (no cpuprofile artifact recorded on this run)`);continue}let te=Bun.file(L.path);if(!await te.exists()){S.push(`${ee.id} (artifact missing on disk: ${L.path})`);continue}P.push({path:`${ee.id}.cpuprofile`,content:await te.text()})}if(P.length===0&&S.length>0)return{text:`No .cpuprofile artifacts available:
|
|
7
|
-
${S.map((ee)=>` - ${ee}`).join(`
|
|
8
|
-
`)}
|
|
9
|
-
`};return{files:P}}};var Xn={name:"json",async render(a){return{text:I(a)}}};var Zn={name:"jsonl",async render(a){let{measurements:b,...p}=a;return{text:`${[g({kind:"document",...p}),...b.map((S)=>g({kind:"measurement",...S}))].join(`
|
|
10
|
-
`)}
|
|
11
|
-
`}}};function en(a){return a.measurements.filter((b)=>b.phase==="paired"&&b.timing!==void 0&&b.paired!==void 0)}function qe(a){let b=(a-1)*100;return`${b>=0?"+":""}${b.toFixed(1)}%`}function bn(a){if(!a.flagged)return"";let b=a.repeats?.length?` (repeats: ${a.repeats.map((p)=>qe(p.medianRatio)).join(", ")})`:"";if(a.confirmed===void 0)return`${a.flagged}${b}`;return`${a.confirmed?`${a.flagged}, confirmed`:`${a.flagged}? unconfirmed`}${b}`}function wn(a){return`working tree vs ${a.base.ref} (${a.base.sha.slice(0,7)}) \xB7 ${a.rounds} rounds \xB7 threshold ${a.thresholdPct}% \xB7 geomean threshold ${a.geomeanThresholdPct}%`}function yn(a){let b=a.geomeanPct===null?"Geomean -":`Geomean ${a.geomeanPct>=0?"+":""}${a.geomeanPct.toFixed(1)}% (threshold ${a.geomeanThresholdPct}%)`,p=a.unconfirmed>0?` (${a.unconfirmed} unconfirmed)`:"";return`${b} \xB7 ${a.regressed} regressed, ${a.improved} improved, ${a.unchanged} unchanged of ${a.matched}${p} \xB7 ${a.verdict}`}function kn(a){let b=new Map(a.workloads.map((P)=>[P.id,P])),p=(P)=>b.has(P)?t(b.get(P)):P;return{outputDiffers:en(a).filter((P)=>!P.paired.sameOutput).map((P)=>p(P.workloadId)),baseOnly:(a.unmatched?.baseOnly??[]).map(p),candOnly:(a.unmatched?.candOnly??[]).map(p)}}function dn(a){if(!a?.entry)return;if(a.entry.group!==void 0)return a.entry.group;let b=a.entry.task,p=b.lastIndexOf("/");return p===-1?void 0:b.slice(0,p)}function tn(a){let b=Math.min(...a.map((S)=>S.run.timing.median)),p=new Map;for(let S of a){let ee=dn(S.workload);if(ee===void 0)continue;let L=p.get(ee);if(L)L.push(S);else p.set(ee,[S])}let P=new Map;for(let S of a){let ee=dn(S.workload);if(ee===void 0){P.set(S,b);continue}let L=p.get(ee)??[S],te=L.find((O)=>O.workload?.baseline);P.set(S,te?te.run.timing.median:Math.min(...L.map((O)=>O.run.timing.median)))}return P}function rn(a){return a.measurements.filter((b)=>b.phase==="timing"&&b.timing!==void 0)}function sn(a,b){let p=new Set(b.map((P)=>P.workloadId));return a.workloads.filter((P)=>P.skipped&&!p.has(P.id))}function Pn(a){for(let b of a.comparisons??[]){let p=b.warnings?.find((P)=>P.code==="environment-mismatch");if(p)return p}return}function on(a){let b=new Map;for(let p of a.measurements){if(p.phase!=="memstats"||!p.memory)continue;let P=b.get(p.workloadId)??{warnings:[]};if(p.memory.bytesPerOp!==void 0)P.retained=p.memory.bytesPerOp;if(p.memory.peakBytes!==void 0)P.peak=p.memory.peakBytes;P.warnings.push(...p.warnings),b.set(p.workloadId,P)}return b}function et(a){return(a/1e6).toFixed(3)}function Sn(a){if(!a?.params)return"";return` (${Object.entries(a.params).map(([p,P])=>`${p}=${P}`).join(", ")})`}function Ge(a){return de(String(a))}function tr(a){let b;for(let p of a){let P=p?.params?Object.keys(p.params):void 0;if(P?.length!==2)return;if(b===void 0)b=P;else if(P.length!==b.length||P.some((S,ee)=>S!==b[ee]))return}return b}function rr(a){let b=[...a.values()],p=[{name:"Retained/op",cell:(P)=>P?.retained===void 0?"-":k(P.retained)},{name:"Peak mem",cell:(P)=>P?.peak===void 0?"-":k(P.peak)}].filter((P,S)=>b.some((ee)=>S===0?ee.retained!==void 0:ee.peak!==void 0));return{columns:p.map((P)=>P.name),cells:(P)=>p.map((S)=>S.cell(a.get(P)))}}var nt=10,tt=10,rt={name:"markdown",async render(a){let b=new Map(a.workloads.map((O)=>[O.id,O])),p=[];p.push("# Profile Report","");let P=a.git?` \xB7 ${v(a.git)}`:"";if(p.push(`Bun ${a.bunVersion} \xB7 ostia ${a.toolVersion} \xB7 ${a.platform.os}/${a.platform.arch} \xB7 ${a.createdAt}${P}`,""),a.environment)p.push(q(a.environment),"");let S=Pn(a);if(S)p.push(`> \u26A0 ${S.message}`,"");if(a.ab){let O=en(a);if(p.push("## A/B",""),p.push(wn(a.ab),""),O.length>0){p.push("| Task | Base | Candidate | Change | p25\u2026p75 | Verdict |","|---|---|---|---|---|---|");for(let we of O){let ue=b.get(we.workloadId),ge=we.paired,ce=M(Math.min(ge.baseMedianNs,we.timing.median)),Re=bn(ge);p.push(`| ${Ge(t(ue)+Sn(ue))} | ${n(ge.baseMedianNs,ce)} | ${n(we.timing.median,ce)} | ${qe(ge.medianRatio)} | ${qe(ge.p25)}\u2026${qe(ge.p75)} | ${Re?`**${Ge(Re)}**`:""} |`)}p.push("")}let me=kn(a);if(me.outputDiffers.length>0)p.push(`Output differs from the base: ${me.outputDiffers.map(Ge).join(", ")}`,"");if(me.baseOnly.length>0)p.push(`Base only: ${me.baseOnly.map(Ge).join(", ")}`,"");if(me.candOnly.length>0)p.push(`Candidate only: ${me.candOnly.map(Ge).join(", ")}`,"");for(let we of O){let ue=t(b.get(we.workloadId));for(let ge of we.warnings)p.push(`- **${ue}**: ${ge.message} (\`${ge.code}\`)`)}if(O.some((we)=>we.warnings.length>0))p.push("");p.push(`**${yn(a.ab)}**`,"")}let ee=rn(a),L=sn(a,ee),te=on(a);if(ee.length>0||L.length>0){p.push("## Timing","");let O=new Map,me=[];for(let ce of ee){let Re=b.get(ce.workloadId)?.entry?.group;if(Re===void 0){me.push(ce);continue}let Ie=O.get(Re);if(Ie)Ie.push(ce);else O.set(Re,[ce])}let we=new Map;for(let[ce,Re]of O){let Ie=tr(Re.map((Te)=>b.get(Te.workloadId)));if(Ie)we.set(ce,{keys:Ie,runs:Re});else me.push(...Re)}if(me.length>0||L.length>0){let ce=ee.map((Oe)=>({run:Oe,workload:b.get(Oe.workloadId)})),Re=ce.length>1,Ie=Re?tn(ce):void 0,Te=new Map(ce.map((Oe)=>[Oe.run.id,Ie?.get(Oe)??Oe.run.timing.median])),Be=Re?" Relative |":"",Fe=Re?"---|":"",De=me.some((Oe)=>T(Oe)),Ce=De?" User/Sys |":"",ve=De?"---|":"",$e=rr(te),Ne=$e.columns.map((Oe)=>` ${Oe} |`).join(""),Ue=$e.columns.map(()=>"---|").join("");p.push(`| Task | Median | Spread (p75\u2026p99) | Mean \xB1 SD | Range | MAD |${Ce}${Ne}${Be}`,`|---|---|---|---|---|---|${ve}${Ue}${Fe}`);for(let Oe of me){let Ae=b.get(Oe.workloadId),_e=Ge(t(Ae)+Sn(Ae)),Se=Oe.timing,Ee=M(Se.median),Ve=T(Oe),ze=De?` ${Ve?Y(Ve):"-"} |`:"",He=Re?` ${K(Se.median/(Te.get(Oe.id)??Se.median),!!Ae?.baseline)} |`:"",Ke=$e.cells(Oe.workloadId).map((We)=>` ${We} |`).join("");p.push(`| ${_e} | ${n(Se.median,Ee)} | ${n(Se.p75,Ee)}\u2026${n(Se.p99,Ee)} | ${n(Se.mean,Ee)} \xB1 ${n(Se.stddev,Ee)} | ${n(Se.min,Ee)}\u2026${n(Se.max,Ee)} | ${n(Se.mad,Ee)} |${ze}${Ke}${He}`)}for(let Oe of L){let Ae=Ge(t(Oe)+Sn(Oe)),_e=Re?" - |":"",Se=De?" - |":"",Ee=$e.columns.map(()=>" - |").join("");p.push(`| ${Ae} | - skipped | - | - | - | - |${Se}${Ee}${_e}`)}p.push("")}for(let[ce,{keys:Re,runs:Ie}]of we){let[Te,Be]=Re,Fe=[],De=[],Ce=new Map;for(let ve of Ie){let $e=b.get(ve.workloadId).params,Ne=$e[Te],Ue=$e[Be];if(!Fe.includes(Ne))Fe.push(Ne);if(!De.includes(Ue))De.push(Ue);Ce.set(`${Ne}\x00${Ue}`,ve)}p.push(`### ${Ge(ce)} (${Ge(Te)} \xD7 ${Ge(Be)})`,""),p.push(`| ${Ge(Te)} \\ ${Ge(Be)} | ${De.map(Ge).join(" | ")} |`,`|---|${De.map(()=>"---").join("|")}|`);for(let ve of Fe){let $e=De.map((Ne)=>{let Ue=Ce.get(`${ve}\x00${Ne}`);return Ue?n(Ue.timing.median):"-"});p.push(`| ${Ge(ve)} | ${$e.join(" | ")} |`)}p.push("")}let ue=(ce)=>{let Re=te.get(ce.workloadId)?.warnings;return Re?.length?[...ce.warnings,...Re]:ce.warnings},ge=ee.filter((ce)=>ue(ce).length>0);if(ge.length>0){p.push("### Warnings","");for(let ce of ge){let Re=t(b.get(ce.workloadId));for(let Ie of ue(ce))p.push(`- **${Re}**: ${Ie.message} (\`${Ie.code}\`)`)}p.push("")}}for(let O of a.measurements){if(O.phase!=="cpu"&&O.phase!=="heap")continue;let me=t(b.get(O.workloadId));if(O.phase==="cpu"){if(p.push(`## CPU capture - ${me}`,""),p.push(`instrumented, diagnostic wall ${et(O.diagnosticWallNs??0)}ms`,""),O.cpu){p.push(`origin: \`${O.cpu.origin}\`, interval: ${O.cpu.samplingIntervalUs}\xB5s, samples: ${E(O.cpu)}`,""),p.push("| Self % | Self (ms) | Total (ms) | Frame |","|---|---|---|---|");let we=O.cpu.totals.reduce((ue,ge)=>ue+ge.selfUs,0)||1;for(let ue of O.cpu.totals.slice(0,nt)){let ge=O.cpu.frames[ue.frameIx],ce=(ue.selfUs/we*100).toFixed(1);p.push(`| ${ce}% | ${(ue.selfUs/1000).toFixed(2)} | ${(ue.totalUs/1000).toFixed(2)} | ${Ge(ge?.name||"(anonymous)")} |`)}if(p.push(""),O.jit){let ue=O.jit.tiers;p.push(`JIT tiers: LLInt ${ue.llint} \xB7 Baseline ${ue.baseline} \xB7 DFG ${ue.dfg} \xB7 FTL ${ue.ftl}`,"")}}}else if(p.push(`## Heap snapshot - ${me}`,""),p.push(`instrumented, diagnostic wall ${et(O.diagnosticWallNs??0)}ms`,""),O.heap){p.push(`${O.heap.objectCount??"?"} objects, ${((O.heap.heapSizeBytes??0)/1e6).toFixed(2)}MB`,""),p.push("| Count | Type |","|---|---|");for(let we of O.heap.typeCounts.slice(0,tt))p.push(`| ${we.count} | ${Ge(we.type)} |`);p.push("")}for(let we of O.artifacts)p.push(`- artifact: \`${we.path}\``);for(let we of O.warnings)p.push(`- ! ${we.message} (\`${we.code}\`)`);if(O.artifacts.length>0||O.warnings.length>0)p.push("")}if(a.comparisons&&a.comparisons.length>0){p.push("## Comparisons","");for(let O of a.comparisons){let me=a.measurements.find((ue)=>ue.id===O.candidateMeasurementId),we=t(me?b.get(me.workloadId):b.get(O.candidateMeasurementId));if(p.push(`### ${O.verdict==="pass"?"\u2713":"\u2717"} ${we}`,""),O.timing){let ue=O.timing.medianDeltaPct>0?"+":"",ge=O.timing.verdict==="unchanged"&&O.timing.pValue!==void 0&&O.timing.pValue>=O.thresholds.alpha?"~":"",ce=[];if(me?.timing)ce.push(`n=${me.timing.samples.length}`);if(O.timing.ci95)ce.push(`95% CI [${O.timing.ci95[0]>0?"+":""}${O.timing.ci95[0].toFixed(1)}%, ${O.timing.ci95[1]>0?"+":""}${O.timing.ci95[1].toFixed(1)}%]`);if(O.timing.pValue!==void 0)ce.push(`p=${O.timing.pValue.toFixed(4)}`);ce.push(`threshold ${O.thresholds.effectiveTimingPct.toFixed(1)}%`),p.push(`- timing: ${ge}${ue}${O.timing.medianDeltaPct.toFixed(1)}% median, ${ce.join(", ")} (**${O.timing.verdict}**)`)}for(let ue of O.frames?.slice(0,nt)??[]){if(Math.abs(ue.deltaPct)<F)continue;let ge=ue.deltaPct>0?"+":"";p.push(`- frame \`${Ge(ue.name)}\`: ${ge}${ue.deltaPct.toFixed(1)}% self-time (${(ue.baseSelfUs/1000).toFixed(2)}ms \u2192 ${(ue.candSelfUs/1000).toFixed(2)}ms)`)}for(let ue of O.heapTypes?.slice(0,tt)??[]){if(Math.abs(ue.deltaPct)<F)continue;let ge=ue.deltaPct>0?"+":"";p.push(`- heap \`${Ge(ue.type)}\`: ${ge}${ue.deltaPct.toFixed(1)}% count (${ue.baseCount} \u2192 ${ue.candCount})`)}for(let ue of O.warnings??[]){if(ue.code==="environment-mismatch")continue;p.push(`- ! ${ue.message} (\`${ue.code}\`)`)}p.push("")}}return{text:p.join(`
|
|
12
|
-
`)}}};var sr=15;function On(a){return`n${a}`}function ir(a,b,p){return`${(a||"(anonymous)").replace(/"/g,"'")} (self ${(b/1000).toFixed(2)}ms, total ${(p/1000).toFixed(2)}ms)`}function or(a,b,p,P){let S=[];if(P<=0)return S;for(let ee=0;ee<b;ee++){if(ee===p)continue;let L=a[ee];if(S.length===P&&L<=a[S[P-1]])continue;let te=S.length;while(te>0&&a[S[te-1]]<L)te--;if(S.splice(te,0,ee),S.length>P)S.pop()}return S}var st={name:"mermaid",async render(a,b={}){let p=b.topN??sr;return{files:Xe(a,b.measurementId).map((ee)=>{let L=ee.cpu,{nodes:te,frames:O}=L,me=nn(L),{selfUs:we,totalUs:ue}=Yn(L,me),{parentIx:ge}=me,ce=me.roots[0]??-1,Re=or(we,me.count,ce,p),Ie=new Set(ce!==-1?[ce]:[]),Te=[];for(let Fe of Re){Te.length=0;for(let De=Fe;De!==-1;De=ge[De])Te.push(De);for(let De=Te.length-1;De>=0;De--)Ie.add(Te[De])}let Be=["graph TD"];for(let Fe of Ie){let De=te[Fe].id;Be.push(` ${On(De)}["${ir(O[te[Fe].frameIx].name,we[Fe],ue[Fe])}"]`)}for(let Fe of Ie){let De=ge[Fe];if(De!==-1&&Ie.has(De))Be.push(` ${On(te[De].id)} --> ${On(te[Fe].id)}`)}return{path:`${ee.id}.mermaid.md`,content:`${Be.join(`
|
|
13
|
-
`)}
|
|
14
|
-
`}})}}};var w=1;function Le(a){return Number.isFinite(a)?Number(a.toPrecision(6)):a}function Dn(a,b){return a?.entry?.task??a?.label??a?.command?.join(" ")??b}function it(a,b){if(b?.entry?.group!==void 0)a.group=b.entry.group;if(b?.description!==void 0)a.description=b.description;if(b?.groupDescription!==void 0)a.groupDescription=b.groupDescription;if(b?.params!==void 0)a.params=b.params}function ot(a){if(!a?.timing)return;let b={medianPct:Le(a.timing.medianDeltaPct),meanPct:Le(a.timing.meanDeltaPct),verdict:a.timing.verdict,pass:a.verdict==="pass",effectiveTimingPct:Le(a.thresholds.effectiveTimingPct),matched:!0};if(a.timing.ci95)b.ci95=[Le(a.timing.ci95[0]),Le(a.timing.ci95[1])];if(a.timing.pValue!==void 0)b.pValue=Le(a.timing.pValue);return b}function ar(a,b,p,P){let S={event:"run",protocolVersion:w,schemaVersion:a.schemaVersion,workloadId:b.id,task:Dn(b,b.id),skipped:!0,batch:1,warnings:(p?.warnings??[]).map((L)=>L.data?{code:L.code,data:L.data}:{code:L.code})};if(it(S,b),P!==void 0)S.noiseFloorPct=Le(P);let ee=ot(p);if(ee)S.delta=ee;return S}function mr(a){let b=new Map(a.workloads.map((ue)=>[ue.id,ue])),p=a.environment?.noise.floorPct,P=rn(a).map((ue)=>({run:ue,workload:b.get(ue.workloadId)})),S=P.length>1?tn(P):void 0,ee=[...P,...en(a).map((ue)=>({run:ue,workload:b.get(ue.workloadId)}))],L=new Map((a.comparisons??[]).map((ue)=>[ue.candidateMeasurementId,ue])),te=on(a),O=new Map;for(let ue of a.measurements){if(ue.phase!=="cpu"||ue.warnings.length===0)continue;let ge=O.get(ue.workloadId)??[];O.set(ue.workloadId,[...ge,...ue.warnings])}let me=sn(a,ee.map((ue)=>ue.run)).map((ue)=>ar(a,ue,L.get(ue.id),p));return[...ee.map((ue)=>{let{run:ge,workload:ce}=ue,Re=ge.timing,Ie=L.get(ge.id),Te={event:"run",protocolVersion:w,schemaVersion:a.schemaVersion,workloadId:ge.workloadId,task:Dn(ce,ge.workloadId),unit:"ns",samples:Re.samples.length,batch:Re.batch??1,mean:Le(Re.mean),median:Le(Re.median),stddev:Le(Re.stddev),stddevPct:Le(Re.mean===0?0:Re.stddev/Re.mean*100),min:Le(Re.min),max:Le(Re.max),warnings:[...ge.warnings,...O.get(ge.workloadId)??[],...te.get(ge.workloadId)?.warnings??[],...Ie?.warnings??[]].map(($e)=>$e.data?{code:$e.code,data:$e.data}:{code:$e.code})};Te.p75=Le(Re.p75),Te.p99=Le(Re.p99),Te.mad=Le(Re.mad);let Be=T(ge);if(Be)Te.userNs=Le(Be.userNs),Te.systemNs=Le(Be.systemNs);let Fe=te.get(ge.workloadId);if(Fe?.retained!==void 0)Te.retainedBytesPerOp=Math.round(Fe.retained);if(Fe?.peak!==void 0)Te.peakBytes=Math.round(Fe.peak);it(Te,ce);let De=S?.get(ue);if(De!==void 0)Te.relative=Le(Re.median/De);if(ce?.baseline)Te.baseline=!0;if(p!==void 0)Te.noiseFloorPct=Le(p);let Ce=ot(Ie);if(Ce)Te.delta=Ce;let ve=ge.paired;if(ve)Te.paired={baseMedian:Le(ve.baseMedianNs),medianRatio:Le(ve.medianRatio),p25:Le(ve.p25),p75:Le(ve.p75),rounds:ve.rounds,verdict:ve.verdict,...ve.flagged&&{flagged:ve.flagged},...ve.confirmed!==void 0&&{confirmed:ve.confirmed},...ve.repeats&&{repeats:ve.repeats.map(($e)=>Le($e.medianRatio))},sameOutput:ve.sameOutput};return Te}),...me]}function ur(a){if(!a.unmatched)return[];let b=(p,P)=>({event:"unmatched",protocolVersion:w,workloadId:p.id,task:Dn(p,p.id),side:P});return[...a.unmatched.baseOnly.map((p)=>b(p,"base")),...a.unmatched.candOnly.map((p)=>b(p,"cand"))]}function cr(a,b){let p=b.command==="ab"&&a.ab?{...a.ab,effectiveTimingPct:a.ab.thresholdPct}:a.comparisonSummary,P=(b.unmatched?.baseOnly.length??0)+(b.unmatched?.candOnly.length??0),S={event:"summary",protocolVersion:w,command:b.command,matched:p?.matched??0,regressed:p?.regressed??0,improved:p?.improved??0,unchanged:p?.unchanged??0,unmatched:P,geomeanPct:p?.geomeanPct!==void 0?p.geomeanPct:null,effectiveTimingPct:Le(p?.effectiveTimingPct??0),verdict:b.exitCode===0?"pass":"fail",exitCode:b.exitCode};if(b.command==="ci"){if(S.cached=b.cached??0,S.executed=b.executed??0,S.failed=b.failed??0,S.missingBaseline=b.missingBaseline??0,b.baseline)S.baseline=b.baseline}if(b.command==="ab"&&a.ab)S.base=a.ab.base,S.geomeanThresholdPct=a.ab.geomeanThresholdPct,S.unconfirmed=a.ab.unconfirmed,S.outputDiffers=a.ab.outputDiffers;if(a.environment)S.noiseFloorPct=Le(a.environment.noise.floorPct);if(b.baseGit||b.candGit)S.git={...b.baseGit&&{base:b.baseGit},...b.candGit&&{cand:b.candGit}};if(b.exportedTo)S.exportedTo=b.exportedTo;return S}var at={name:"minimal",async render(a,b={}){let p=[...mr(a)];if(b.protocol)p.push(...ur(b.protocol)),p.push(cr(a,b.protocol));let P=p.map((S)=>JSON.stringify(S));return{text:P.length>0?`${P.join(`
|
|
15
|
-
`)}
|
|
16
|
-
`:""}}};var dr="https://www.speedscope.app/file-format-schema.json";function mt(a){return a?.label??a?.command?.join(" ")??a?.entry?.task??"profile"}var ut={name:"speedscope",async render(a,b={}){let p=Xe(a,b.measurementId),P=new Map(a.workloads.map((ee)=>[ee.id,ee]));return{files:p.map((ee)=>{let L=ee.cpu,{nodes:te}=L,O=nn(L),me=L.samples?.nodeIds??[],we=L.samples?.timeDeltasUs??[],ue=Array(O.count);for(let Ie of O.order){let Te=O.parentIx[Ie],Be=te[Ie].frameIx;ue[Ie]=Te===-1?[Be]:[...ue[Te],Be]}let ge=Array(me.length);for(let Ie=0;Ie<me.length;Ie++){let Te=O.indexOf(me[Ie]);ge[Ie]=Te===-1?[]:ue[Te]}let ce=0;for(let Ie=0;Ie<we.length;Ie++)ce+=we[Ie];let Re={$schema:dr,exporter:"ostia",name:mt(P.get(ee.workloadId)),activeProfileIndex:0,shared:{frames:L.frames.map((Ie)=>({name:Ie.name||"(anonymous)",file:Ie.url,line:Ie.line!==void 0?Ie.line+1:void 0}))},profiles:[{type:"sampled",name:mt(P.get(ee.workloadId)),unit:"microseconds",startValue:0,endValue:ce,samples:ge,weights:we}]};return{path:`${ee.id}.speedscope.json`,content:`${JSON.stringify(Re,null,2)}
|
|
17
|
-
`}})}}};function lr(a){return(a/1e6).toFixed(3)}var dt={name:"table",async render(a){let b=rn(a),p=new Map(a.workloads.map((We)=>[We.id,We])),P=a.environment?[q(a.environment),""]:[];if(a.ab)return{text:pr(a,en(a),P)};let S=sn(a,b);if(b.length===0&&S.length===0){let We=ct(a,p);return{text:We.length>0?`${[...P,...We].join(`
|
|
18
|
-
`)}
|
|
19
|
-
`:`(no timing runs)
|
|
20
|
-
`}}let ee=new Map(b.map((We)=>[We.workloadId,We])),L=[],te=[];for(let We of a.workloads){let je=ee.get(We.id),Ye=t(We);if(je){let an={kind:"measured",run:je,workload:We,label:Ye};L.push(an),te.push(an)}else if(We.skipped)L.push({kind:"skipped",workload:We,label:Ye})}let O=on(a),me=!1,we=!1;for(let We of O.values()){if(We.retained!==void 0)me=!0;if(We.peak!==void 0)we=!0}let ue=(We)=>{let je=O.get(We.workloadId)?.warnings;return je?.length?[...We.warnings,...je]:We.warnings},ge=new Map(te.map((We)=>[We,T(We.run)])),ce=[...ge.values()].some(Boolean),Re=te.length>1,Ie=tn(te),Te=new Map,Be=new Map,Fe;for(let We of L){let je=dn(We.workload);if(je!==Fe){if(je!==void 0)Be.set(We,je);Fe=je}Te.set(We,je!==void 0?" ":"")}let De=Math.max(4,...L.map((We)=>Te.get(We).length+We.label.length)),Ce=10,ve=18,$e=18,Ne=11,Ue=10,Oe=18,Ae=[...P],_e=me?` ${"Retained/op".padEnd(Ne)}`:"",Se=we?` ${"Peak mem".padEnd(Ue)}`:"",Ee=ce?` ${"User/Sys".padEnd(Oe)}`:"",Ve=`${"Task".padEnd(De)} ${"Median".padEnd(Ce)} ${"Spread".padEnd(ve)} ${"Range".padEnd($e)}${Ee}${_e}${Se}${Re?" Relative":""}`;Ae.push(Ve),Ae.push("-".repeat(Ve.length));let ze=[];for(let We of L){let je=Be.get(We);if(je!==void 0)Ae.push(`${je}:`);let Ye=Te.get(We);if(We.kind==="skipped"){Ae.push(`${(Ye+We.label).padEnd(De)} - skipped`);continue}let{run:an,label:ht,workload:$n}=We,Qe=an.timing,mn=M(Qe.median),bt=n(Qe.median,mn),wt=`${n(Qe.p75,mn)}\u2026${n(Qe.p99,mn)}`,yt=`${n(Qe.min,mn)}\u2026${n(Qe.max,mn)}`,un=`${(Ye+ht).padEnd(De)} ${bt.padEnd(Ce)} ${wt.padEnd(ve)} ${yt.padEnd($e)}`;if(ce){let Je=ge.get(We);un+=` ${(Je?Y(Je):"").padEnd(Oe)}`}let En=$n?O.get($n.id):void 0;if(me){let Je=En?.retained,xn=Je!==void 0?k(Je):"";un+=` ${xn.padEnd(Ne)}`}if(we){let Je=En?.peak,xn=Je!==void 0?k(Je):"";un+=` ${xn.padEnd(Ue)}`}if(Re){let Je=Qe.median/(Ie.get(We)??Qe.median);un+=` ${K(Je,!!$n?.baseline)}`}Ae.push(un);let Wn=ue(an);if(Wn.length>0)Ae.push(`${" ".repeat(Ye.length)} ! ${Wn.map((Je)=>Je.code).join(", ")}`),ze.push(We)}if(ze.length>0){Ae.push(""),Ae.push("Warnings:");for(let We of ze)for(let je of ue(We.run))Ae.push(` ${We.label}: ${je.message}`)}let He=fr(a,p);if(He.length>0)Ae.push(""),Ae.push(...He);let Ke=ct(a,p);if(Ke.length>0)Ae.push(""),Ae.push(...Ke);return{text:`${Ae.map((We)=>We.trimEnd()).join(`
|
|
21
|
-
`)}
|
|
22
|
-
`}}};function pr(a,b,p){let P=new Map(a.workloads.map((O)=>[O.id,O])),S=[...p];if(a.ab)S.push(`A/B: ${wn(a.ab)}`,"");let ee=b.map((O)=>{let me=P.get(O.workloadId),we=O.paired,ue=M(Math.min(we.baseMedianNs,O.timing.median));return{run:O,group:dn(me),label:t(me),cells:[n(we.baseMedianNs,ue),n(O.timing.median,ue),qe(we.medianRatio),`${qe(we.p25)}\u2026${qe(we.p75)}`],verdict:bn(we)}});if(ee.length>0){let O=Math.max(4,...ee.map((ge)=>(ge.group!==void 0?2:0)+ge.label.length)),me=[10,10,9,18],we=`${"Task".padEnd(O)} ${["Base","Candidate","Change","p25\u2026p75"].map((ge,ce)=>ge.padEnd(me[ce])).join(" ")} Verdict`;S.push(we,"-".repeat(we.length));let ue;for(let ge of ee){if(ge.group!==ue&&ge.group!==void 0)S.push(`${ge.group}:`);ue=ge.group;let ce=ge.group!==void 0?" ":"";if(S.push(`${(ce+ge.label).padEnd(O)} ${ge.cells.map((Re,Ie)=>Re.padEnd(me[Ie])).join(" ")} ${ge.verdict}`),ge.run.warnings.length>0)S.push(`${ce} ! ${ge.run.warnings.map((Re)=>Re.code).join(", ")}`)}}let L=kn(a);if(L.outputDiffers.length>0){S.push("",`Output differs from the base (${L.outputDiffers.length}):`);for(let O of L.outputDiffers)S.push(` ${O}`)}if(L.baseOnly.length>0||L.candOnly.length>0){if(S.push("","Unmatched:"),L.baseOnly.length>0)S.push(` base only: ${L.baseOnly.join(", ")}`);if(L.candOnly.length>0)S.push(` candidate only: ${L.candOnly.join(", ")}`)}let te=ee.filter((O)=>O.run.warnings.length>0);if(te.length>0){S.push("","Warnings:");for(let O of te)for(let me of O.run.warnings)S.push(` ${O.label}: ${me.message}`)}if(a.ab)S.push("",yn(a.ab));return`${S.map((O)=>O.trimEnd()).join(`
|
|
23
|
-
`)}
|
|
24
|
-
`}function ct(a,b){if(!a.comparisons||a.comparisons.length===0)return[];let p=[],P=new Map(a.measurements.map((L)=>[L.id,L])),S=Pn(a);if(S)p.push(`\u26A0 ${S.message}`,"");let ee=[];for(let L of a.comparisons){let te=P.get(L.candidateMeasurementId),O=b.get(te?.workloadId??L.candidateMeasurementId),me=O?t(O):L.candidateMeasurementId,we=L.verdict==="pass"?"\u2713":"\u2717";if(p.push(`${we} ${me}`),L.timing){let ge=(ce)=>`${ce>=0?"+":""}${ce.toFixed(1)}%`;if(L.timing.ci95&&L.timing.pValue!==void 0){let ce=L.timing.pValue<0.001?"p<0.001":`p=${L.timing.pValue.toFixed(3)}`;p.push(` timing: ${ge(L.timing.medianDeltaPct)} median, 95% CI [${ge(L.timing.ci95[0])}, ${ge(L.timing.ci95[1])}], ${ce} (${L.timing.verdict})`)}else p.push(` timing: ${ge(L.timing.medianDeltaPct)} median (${L.timing.verdict})`)}if(L.frames)for(let ge of L.frames.slice(0,lt)){if(Math.abs(ge.deltaPct)<F)continue;let ce=ge.deltaPct>0?"+":"";p.push(` frame ${ge.name}: ${ce}${ge.deltaPct.toFixed(1)}% self-time (${(ge.baseSelfUs/1000).toFixed(2)}ms -> ${(ge.candSelfUs/1000).toFixed(2)}ms)`)}if(L.heapTypes)for(let ge of L.heapTypes.slice(0,pt)){if(Math.abs(ge.deltaPct)<F)continue;let ce=ge.deltaPct>0?"+":"";p.push(` heap ${ge.type}: ${ce}${ge.deltaPct.toFixed(1)}% count (${ge.baseCount} -> ${ge.candCount})`)}let ue=(L.warnings??[]).filter((ge)=>ge.code!=="environment-mismatch");if(ue.length>0){p.push(` ! ${ue.map((ge)=>ge.code).join(", ")}`);for(let ge of ue)ee.push({label:me,message:ge.message})}}if(ee.length>0){p.push("","Comparison warnings:");for(let L of ee)p.push(` ${L.label}: ${L.message}`)}return p}var lt=5,pt=5;function fr(a,b){let p=[];for(let P of a.measurements){if(P.phase!=="cpu"&&P.phase!=="heap")continue;let S=b.get(P.workloadId),ee=S?t(S):P.workloadId;if(P.phase==="cpu")if(P.cpu){p.push(`CPU capture - ${ee} (instrumented, ${P.cpu.samplingIntervalUs}\xB5s interval, ${E(P.cpu)} samples, diagnostic wall ${lr(P.diagnosticWallNs??0)}ms)`);let L=P.cpu.totals.reduce((te,O)=>te+O.selfUs,0)||1;for(let te of P.cpu.totals.slice(0,lt)){let O=P.cpu.frames[te.frameIx],me=(te.selfUs/L*100).toFixed(1);p.push(` ${me.padStart(5)}% ${(te.selfUs/1000).toFixed(2).padStart(8)}ms self ${O?.name??"?"}`)}}else p.push(`CPU capture - ${ee} (instrumented, no evidence captured)`);else if(P.heap){let L=((P.heap.heapSizeBytes??0)/1e6).toFixed(2);p.push(`Heap snapshot - ${ee} (instrumented, ${P.heap.objectCount??"?"} objects, ${L}MB)`);for(let te of P.heap.typeCounts.slice(0,pt))p.push(` ${String(te.count).padStart(6)} ${te.type}`)}else p.push(`Heap snapshot - ${ee} (instrumented, no evidence captured)`);for(let L of P.artifacts)p.push(` artifact: ${L.path}`);for(let L of P.warnings)p.push(` ! ${L.message}`)}return p}var d={table:dt,json:Xn,markdown:rt,jsonl:Zn,minimal:at,collapsed:qn,mermaid:st,speedscope:ut,cpuprofile:Qn};async function ye(a={}){let b=y();if(b.length===0)throw Error("run(): no tasks registered - call group()/task() before run() in the same file.");let p=Bun.main,P;try{P=x(b,a.filter,p)}catch(ee){throw Error(`run(): ${ee.message}`)}let S=await j(p,P,a);if(!a.quiet){let ee=a.format??"table",{text:L}=await d[ee].render(S,{});if(L)process.stdout.write(L)}return S}function xe(a,b){let p=Object.keys(a),P=(S,ee)=>{if(S===p.length){be(ee,()=>b(ee));return}let L=p[S];for(let te of a[L])P(S+1,{...ee,[L]:te})};P(0,{})}function Pe(a){return a}var Nn=1000;async function ae(a){if(hn("time",a),a.warmup!==void 0&&(!Number.isFinite(a.warmup)||a.warmup<0))throw RangeError(`time: warmup must be >= 0, got ${a.warmup}`);let b=i({samples:a.samples??null,budgetMs:a.budgetMs??null,minSamples:a.minSamples??null,warmup:a.warmup??null,cpu:a.cpu??!1,heap:a.heap??!1,cpuIntervalUs:a.cpuIntervalUs??Nn}),P=`${a.outDir??Ze}/artifacts`,S=a.noiseCheck===!1?void 0:u(),ee=S?m(S):void 0,L=[],te=[],O=a.commands.map((ce)=>{let Re=typeof ce==="string"||Array.isArray(ce)?{command:ce}:ce,Ie=Array.isArray(Re.command)?Re.command:R(Re.command),Te=Re.prepare??a.prepare,Be=Re.timeSource??a.timeSource,Fe=Re.timeoutMs??a.timeoutMs,De=Re.ignoreExitCodes??a.ignoreExitCodes,Ce=_(Ie,Re.label??(Array.isArray(Re.command)?void 0:Re.command),{prepare:Te,timeSource:Be});return{argv:Ie,workload:Ce,prepare:Te,timeSource:Be,timeoutMs:Fe,ignoreExitCodes:De}}),me=(a.interleave??!0)&&O.length>1,we=(ce)=>({argv:ce.argv,cwd:a.cwd,env:a.env,samples:a.samples,budgetMs:a.budgetMs,minSamples:a.minSamples,warmup:a.warmup,prepare:ce.prepare,timeSource:ce.timeSource,timeoutMs:ce.timeoutMs,ignoreExitCodes:ce.ignoreExitCodes,signal:a.signal}),ue=O.map((ce)=>vn(we(ce))),ge=async(ce)=>{let{argv:Re,workload:Ie,prepare:Te}=O[ce];L.push(Ie);let Be=ue[ce].result(),Fe=C({workload:Ie,configFingerprint:b,trials:Be.trials,timing:Be.timing,warnings:ee&&te.length===0?[...Be.warnings,ee]:Be.warnings,interleaved:me?!0:void 0});if(te.push(Fe),!a.signal?.aborted)te.push(...await gr({workload:Ie,argv:Re,timingMeasurementId:Fe.id,cfgFp:b,opts:a,artifactDir:P,prepare:Te}))};if(me){for(let Re of ue)await Re.warmup();let ce=!0;while(ce){ce=!1;for(let Re of ue)if(await Re.step())ce=!0}for(let Re=0;Re<O.length;Re++)await ge(Re)}else for(let ce=0;ce<O.length;ce++)await Cn(ue[ce]),await ge(ce);if(a.signal?.aborted&&te.length>0){let ce=te[te.length-1];ce.warnings=[...ce.warnings,gt()]}return s(L,te,S)}function gt(){return{code:"aborted",message:"Run was cancelled before it finished; this document holds whatever measurements had already completed."}}async function gr({workload:a,argv:b,timingMeasurementId:p,cfgFp:P,opts:S,artifactDir:ee,prepare:L}){let te=[],O=async(me)=>{if(L)await Q(L,{phase:me,index:0},{cwd:S.cwd,env:S.env})};if(S.cpu){await O("cpu");let me=`${p}-cpu.cpuprofile`,we=await Fn({argv:b,cwd:S.cwd,env:S.env,artifactDir:ee,fileName:me,intervalUs:S.cpuIntervalUs??Nn});te.push(await ft({workload:a,phase:"cpu",configFingerprint:P,diagnosticWallNs:we.diagnosticWallNs,exitCode:we.exitCode,cpu:we.cpu,artifactPath:we.artifactPath,artifactKind:"cpuprofile",warnings:we.warnings}))}if(S.heap){await O("heap");let me=`${p}-heap.heapsnapshot`,we=await An({argv:b,cwd:S.cwd,env:S.env,artifactDir:ee,fileName:me});te.push(await ft({workload:a,phase:"heap",configFingerprint:P,diagnosticWallNs:we.diagnosticWallNs,exitCode:we.exitCode,heap:we.heap,artifactPath:we.artifactPath,artifactKind:"heapsnapshot",warnings:we.warnings}))}return te}async function ft(a){let b=`${a.workload.id}-${a.phase}-${a.configFingerprint}`,p=a.artifactPath?[await he(b,a.artifactKind,a.artifactPath)]:[];return h({workload:a.workload,phase:a.phase,configFingerprint:a.configFingerprint,diagnosticWallNs:a.diagnosticWallNs,exitCode:a.exitCode,cpu:a.cpu,heap:a.heap,warnings:a.warnings,artifacts:p})}async function Me(a,b={}){let p=fe(a),P=i({intervalUs:b.intervalUs??Nn,origin:b.origin??"inspector"}),S=(te)=>te.samples?.nodeIds.length===0?[{code:"empty-profile",message:"In-process capture produced zero samples."}]:[];if(b.signal?.aborted){let te=Bun.nanoseconds(),O=await a(),me=h({workload:p,phase:"cpu",configFingerprint:P,diagnosticWallNs:Bun.nanoseconds()-te,warnings:[gt()],artifacts:[]});return{result:O,measurement:me,document:s([p],[me])}}let ee=b.origin==="jsc"?await ne(a,b):{...await Un(a,b),jit:void 0},L=h({workload:p,phase:"cpu",configFingerprint:P,diagnosticWallNs:ee.diagnosticWallNs,cpu:ee.cpu,jit:ee.jit,warnings:S(ee.cpu),artifacts:[]});return{result:ee.result,measurement:L,document:s([p],[L])}}
|
|
25
|
-
export{f,re,se,H,N,W,l,oe,A,G,V,le,J,ie,U,z,D,ke,w,d,ye,xe,Pe,ae,Me};
|