From c8c165609b363556ecf0f3ee5cedd4d36649f296 Mon Sep 17 00:00:00 2001 From: aqilaziz Date: Tue, 12 May 2026 20:16:55 +0700 Subject: [PATCH 1/2] docs: use median SSR latency when available --- packages/docs/src/components/SSRLatencyChart.astro | 6 +++--- packages/docs/src/components/SSRStatsTable.astro | 4 ++-- packages/docs/src/content.config.ts | 1 + packages/docs/src/pages/framework/[slug].astro | 6 +++--- packages/stats-generator/src/run-ssr-benchmark.ts | 1 + packages/stats-generator/src/save-ci-stats.ts | 1 + packages/stats-generator/src/schemas.ts | 1 + packages/stats-generator/src/ssr/index.ts | 1 + packages/stats-generator/src/ssr/run-benchmark.ts | 1 + packages/stats-generator/src/ssr/types.ts | 2 ++ packages/stats-generator/src/types.ts | 1 + 11 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/docs/src/components/SSRLatencyChart.astro b/packages/docs/src/components/SSRLatencyChart.astro index c6255a71..5ed0ada7 100644 --- a/packages/docs/src/components/SSRLatencyChart.astro +++ b/packages/docs/src/components/SSRLatencyChart.astro @@ -3,12 +3,12 @@ import { ssrStats } from '../lib/collections' import ComparisonBarChart from './ComparisonBarChart.astro' const data = ssrStats - .filter((f) => f?.name != null && Number.isFinite(f.ssrAvgLatencyMs)) .map((f) => ({ name: f.name, - value: f.ssrAvgLatencyMs, + value: f.ssrMedianLatencyMs ?? f.ssrAvgLatencyMs, focused: f.isFocused, })) + .filter((f) => f?.name != null && Number.isFinite(f.value)) --- - + diff --git a/packages/docs/src/components/SSRStatsTable.astro b/packages/docs/src/components/SSRStatsTable.astro index c89abb4d..bc14324d 100644 --- a/packages/docs/src/components/SSRStatsTable.astro +++ b/packages/docs/src/components/SSRStatsTable.astro @@ -15,7 +15,7 @@ const columns = [ : null, }, { key: 'ssrOpsPerSec', header: 'Ops/sec' }, - { key: 'ssrAvgLatencyMs', header: 'Avg Latency' }, + { key: 'ssrLatencyMs', header: 'Median Latency' }, { key: 'ssrBodySizeKb', header: 'Body Size' }, { key: 'ssrDuplicationFactor', header: 'Duplication' }, ] @@ -25,7 +25,7 @@ const tableData = ssrStats.map((f) => ({ package: f.package, isFocused: f.package === 'app-baseline-html' ? true : f.isFocused, ssrOpsPerSec: f.ssrOpsPerSec?.toLocaleString() ?? '', - ssrAvgLatencyMs: `${f.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${f.ssrMedianLatencyMs ?? f.ssrAvgLatencyMs}ms`, ssrBodySizeKb: `${f.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${f.ssrDuplicationFactor}x`, })) diff --git a/packages/docs/src/content.config.ts b/packages/docs/src/content.config.ts index 55a5f22c..ab33e5d0 100644 --- a/packages/docs/src/content.config.ts +++ b/packages/docs/src/content.config.ts @@ -53,6 +53,7 @@ const runtimeCollection = defineCollection({ order: z.number(), ssrOpsPerSec: z.number(), ssrAvgLatencyMs: z.number(), + ssrMedianLatencyMs: z.number().optional(), ssrSamples: z.number(), ssrBodySizeKb: z.number(), ssrDuplicationFactor: z.number(), diff --git a/packages/docs/src/pages/framework/[slug].astro b/packages/docs/src/pages/framework/[slug].astro index 31424cbc..a7519c48 100644 --- a/packages/docs/src/pages/framework/[slug].astro +++ b/packages/docs/src/pages/framework/[slug].astro @@ -137,7 +137,7 @@ const buildData = [ const ssrColumns = [ { key: 'name', header: 'Framework', nameCell: true }, { key: 'ssrOpsPerSec', header: 'Ops/sec' }, - { key: 'ssrAvgLatencyMs', header: 'Avg Latency' }, + { key: 'ssrLatencyMs', header: 'Median Latency' }, { key: 'ssrBodySizeKb', header: 'Body Size' }, { key: 'ssrDuplicationFactor', header: 'Duplication' }, ] @@ -148,7 +148,7 @@ const ssrData = [ { name: baseline.name, ssrOpsPerSec: baseline.ssrOpsPerSec?.toLocaleString() ?? '', - ssrAvgLatencyMs: `${baseline.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${baseline.ssrMedianLatencyMs ?? baseline.ssrAvgLatencyMs}ms`, ssrBodySizeKb: `${baseline.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${baseline.ssrDuplicationFactor}x`, }, @@ -159,7 +159,7 @@ const ssrData = [ { name: runtime.name, ssrOpsPerSec: runtime.ssrOpsPerSec?.toLocaleString() ?? '', - ssrAvgLatencyMs: `${runtime.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${runtime.ssrMedianLatencyMs ?? runtime.ssrAvgLatencyMs}ms`, ssrBodySizeKb: `${runtime.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${runtime.ssrDuplicationFactor}x`, }, diff --git a/packages/stats-generator/src/run-ssr-benchmark.ts b/packages/stats-generator/src/run-ssr-benchmark.ts index 7d7738c0..a9d52107 100644 --- a/packages/stats-generator/src/run-ssr-benchmark.ts +++ b/packages/stats-generator/src/run-ssr-benchmark.ts @@ -52,6 +52,7 @@ async function main() { frameworkVersion, ssrOpsPerSec: result.opsPerSec, ssrAvgLatencyMs: result.avgLatencyMs, + ssrMedianLatencyMs: result.medianLatencyMs, ssrSamples: result.samples, ssrBodySizeKb: result.bodySizeKb, ssrDuplicationFactor: result.duplicationFactor, diff --git a/packages/stats-generator/src/save-ci-stats.ts b/packages/stats-generator/src/save-ci-stats.ts index 23073860..c57e4fb5 100644 --- a/packages/stats-generator/src/save-ci-stats.ts +++ b/packages/stats-generator/src/save-ci-stats.ts @@ -181,6 +181,7 @@ async function main() { frameworkVersion: ssrStats.frameworkVersion, ssrOpsPerSec: ssrStats.ssrOpsPerSec, ssrAvgLatencyMs: ssrStats.ssrAvgLatencyMs, + ssrMedianLatencyMs: ssrStats.ssrMedianLatencyMs, ssrSamples: ssrStats.ssrSamples, ssrBodySizeKb: ssrStats.ssrBodySizeKb, ssrDuplicationFactor: ssrStats.ssrDuplicationFactor, diff --git a/packages/stats-generator/src/schemas.ts b/packages/stats-generator/src/schemas.ts index 4b3fb1fe..69bf94b0 100644 --- a/packages/stats-generator/src/schemas.ts +++ b/packages/stats-generator/src/schemas.ts @@ -22,6 +22,7 @@ export const BuildStatsSchema = z.object({ export const SSRStatsSchema = z.object({ ssrOpsPerSec: z.number().positive(), ssrAvgLatencyMs: z.number().nonnegative(), + ssrMedianLatencyMs: z.number().nonnegative().optional(), ssrSamples: z.number().positive(), ssrBodySizeKb: z.number().positive(), ssrDuplicationFactor: z.number().nonnegative(), diff --git a/packages/stats-generator/src/ssr/index.ts b/packages/stats-generator/src/ssr/index.ts index 2da62de3..09163d45 100644 --- a/packages/stats-generator/src/ssr/index.ts +++ b/packages/stats-generator/src/ssr/index.ts @@ -105,6 +105,7 @@ export function toSSRStats(result: SSRBenchmarkResult): SSRStats { type: 'ssr-app', ssrOpsPerSec: result.opsPerSec, ssrAvgLatencyMs: result.avgLatencyMs, + ssrMedianLatencyMs: result.medianLatencyMs, ssrSamples: result.samples, ssrBodySizeKb: result.bodySizeKb, ssrDuplicationFactor: result.duplicationFactor, diff --git a/packages/stats-generator/src/ssr/run-benchmark.ts b/packages/stats-generator/src/ssr/run-benchmark.ts index 1835ad03..8e2cbcf4 100644 --- a/packages/stats-generator/src/ssr/run-benchmark.ts +++ b/packages/stats-generator/src/ssr/run-benchmark.ts @@ -103,6 +103,7 @@ export async function runBenchmark( package: config.package, opsPerSec: Math.round(task.result.throughput.mean), avgLatencyMs: Number(task.result.latency.mean.toFixed(3)), + medianLatencyMs: Number(task.result.latency.p50.toFixed(3)), samples: task.result.throughput.samplesCount, bodySizeKb: Number((length / 1024).toFixed(2)), duplicationFactor: Number(duplicationFactor.toFixed(2)), diff --git a/packages/stats-generator/src/ssr/types.ts b/packages/stats-generator/src/ssr/types.ts index 63b337f0..494fd9d8 100644 --- a/packages/stats-generator/src/ssr/types.ts +++ b/packages/stats-generator/src/ssr/types.ts @@ -17,6 +17,7 @@ export interface SSRBenchmarkResult { package: string opsPerSec: number avgLatencyMs: number + medianLatencyMs: number samples: number bodySizeKb: number duplicationFactor: number @@ -28,6 +29,7 @@ export interface SSRStats { type: 'ssr-app' ssrOpsPerSec: number ssrAvgLatencyMs: number + ssrMedianLatencyMs?: number ssrSamples: number ssrBodySizeKb: number ssrDuplicationFactor: number diff --git a/packages/stats-generator/src/types.ts b/packages/stats-generator/src/types.ts index 49dc7e2e..7897380a 100644 --- a/packages/stats-generator/src/types.ts +++ b/packages/stats-generator/src/types.ts @@ -44,6 +44,7 @@ export interface CIStats { // SSR stats ssrOpsPerSec?: number ssrAvgLatencyMs?: number + ssrMedianLatencyMs?: number ssrSamples?: number ssrBodySizeKb?: number ssrDuplicationFactor?: number From 7b46a6365e8564750802e3c837246a432c06b9a2 Mon Sep 17 00:00:00 2001 From: aqilaziz Date: Wed, 13 May 2026 04:22:46 +0700 Subject: [PATCH 2/2] docs: seed SSR median latency stats --- packages/app-astro/ci-stats.json | 1 + packages/app-astro/stats/5.16.15.json | 1 + packages/app-baseline-html/ci-stats.json | 1 + packages/app-mastro/ci-stats.json | 1 + packages/app-next-js/ci-stats.json | 1 + packages/app-next-js/stats/16.1.1.json | 1 + packages/app-nuxt/ci-stats.json | 1 + packages/app-nuxt/stats/4.2.2.json | 1 + packages/app-react-router/ci-stats.json | 1 + packages/app-react-router/stats/7.10.1.json | 1 + packages/app-solid-start/ci-stats.json | 1 + packages/app-solid-start/stats/1.2.1.json | 1 + packages/app-sveltekit/ci-stats.json | 1 + packages/app-sveltekit/stats/2.49.4.json | 1 + packages/app-tanstack-start-react/ci-stats.json | 1 + packages/app-tanstack-start-react/stats/1.145.3.json | 1 + packages/docs/src/components/SSRLatencyChart.astro | 2 +- packages/docs/src/components/SSRStatsTable.astro | 2 +- packages/docs/src/content.config.ts | 2 +- packages/docs/src/content/runtime/app-astro.json | 1 + packages/docs/src/content/runtime/app-baseline-html.json | 1 + packages/docs/src/content/runtime/app-mastro.json | 1 + packages/docs/src/content/runtime/app-next-js.json | 1 + packages/docs/src/content/runtime/app-nuxt.json | 1 + packages/docs/src/content/runtime/app-react-router.json | 1 + packages/docs/src/content/runtime/app-solid-start.json | 1 + packages/docs/src/content/runtime/app-sveltekit.json | 1 + .../docs/src/content/runtime/app-tanstack-start-react.json | 1 + packages/docs/src/pages/framework/[slug].astro | 4 ++-- packages/stats-generator/src/schemas.ts | 2 +- packages/stats-generator/src/ssr/types.ts | 2 +- 31 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/app-astro/ci-stats.json b/packages/app-astro/ci-stats.json index 5662fe48..000a033b 100644 --- a/packages/app-astro/ci-stats.json +++ b/packages/app-astro/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "5.16.15", "ssrOpsPerSec": 385, "ssrAvgLatencyMs": 2.628, + "ssrMedianLatencyMs": 0, "ssrSamples": 3806, "ssrBodySizeKb": 99.86, "ssrDuplicationFactor": 1, diff --git a/packages/app-astro/stats/5.16.15.json b/packages/app-astro/stats/5.16.15.json index 5662fe48..000a033b 100644 --- a/packages/app-astro/stats/5.16.15.json +++ b/packages/app-astro/stats/5.16.15.json @@ -4,6 +4,7 @@ "frameworkVersion": "5.16.15", "ssrOpsPerSec": 385, "ssrAvgLatencyMs": 2.628, + "ssrMedianLatencyMs": 0, "ssrSamples": 3806, "ssrBodySizeKb": 99.86, "ssrDuplicationFactor": 1, diff --git a/packages/app-baseline-html/ci-stats.json b/packages/app-baseline-html/ci-stats.json index f877f787..9776e22d 100644 --- a/packages/app-baseline-html/ci-stats.json +++ b/packages/app-baseline-html/ci-stats.json @@ -3,6 +3,7 @@ "runner": "ubuntu-latest", "ssrOpsPerSec": 766, "ssrAvgLatencyMs": 1.315, + "ssrMedianLatencyMs": 0, "ssrSamples": 7602, "ssrBodySizeKb": 96.81, "ssrDuplicationFactor": 1 diff --git a/packages/app-mastro/ci-stats.json b/packages/app-mastro/ci-stats.json index b7adeac8..fb82c219 100644 --- a/packages/app-mastro/ci-stats.json +++ b/packages/app-mastro/ci-stats.json @@ -3,6 +3,7 @@ "runner": "ubuntu-latest", "ssrOpsPerSec": 339, "ssrAvgLatencyMs": 2.983, + "ssrMedianLatencyMs": 0, "ssrSamples": 3353, "ssrBodySizeKb": 181.95, "ssrDuplicationFactor": 1 diff --git a/packages/app-next-js/ci-stats.json b/packages/app-next-js/ci-stats.json index e7f35489..520b0ff2 100644 --- a/packages/app-next-js/ci-stats.json +++ b/packages/app-next-js/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "16.1.1", "ssrOpsPerSec": 125, "ssrAvgLatencyMs": 8.117, + "ssrMedianLatencyMs": 0, "ssrSamples": 1232, "ssrBodySizeKb": 199.11, "ssrDuplicationFactor": 2, diff --git a/packages/app-next-js/stats/16.1.1.json b/packages/app-next-js/stats/16.1.1.json index e7f35489..520b0ff2 100644 --- a/packages/app-next-js/stats/16.1.1.json +++ b/packages/app-next-js/stats/16.1.1.json @@ -4,6 +4,7 @@ "frameworkVersion": "16.1.1", "ssrOpsPerSec": 125, "ssrAvgLatencyMs": 8.117, + "ssrMedianLatencyMs": 0, "ssrSamples": 1232, "ssrBodySizeKb": 199.11, "ssrDuplicationFactor": 2, diff --git a/packages/app-nuxt/ci-stats.json b/packages/app-nuxt/ci-stats.json index efb7d42d..6e6a1bcb 100644 --- a/packages/app-nuxt/ci-stats.json +++ b/packages/app-nuxt/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "4.2.2", "ssrOpsPerSec": 250, "ssrAvgLatencyMs": 4.076, + "ssrMedianLatencyMs": 0, "ssrSamples": 2454, "ssrBodySizeKb": 201.26, "ssrDuplicationFactor": 2, diff --git a/packages/app-nuxt/stats/4.2.2.json b/packages/app-nuxt/stats/4.2.2.json index efb7d42d..6e6a1bcb 100644 --- a/packages/app-nuxt/stats/4.2.2.json +++ b/packages/app-nuxt/stats/4.2.2.json @@ -4,6 +4,7 @@ "frameworkVersion": "4.2.2", "ssrOpsPerSec": 250, "ssrAvgLatencyMs": 4.076, + "ssrMedianLatencyMs": 0, "ssrSamples": 2454, "ssrBodySizeKb": 201.26, "ssrDuplicationFactor": 2, diff --git a/packages/app-react-router/ci-stats.json b/packages/app-react-router/ci-stats.json index 0d86c650..86e1692c 100644 --- a/packages/app-react-router/ci-stats.json +++ b/packages/app-react-router/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "7.10.1", "ssrOpsPerSec": 64, "ssrAvgLatencyMs": 15.528, + "ssrMedianLatencyMs": 0, "ssrSamples": 644, "ssrBodySizeKb": 211.14, "ssrDuplicationFactor": 2, diff --git a/packages/app-react-router/stats/7.10.1.json b/packages/app-react-router/stats/7.10.1.json index 0d86c650..86e1692c 100644 --- a/packages/app-react-router/stats/7.10.1.json +++ b/packages/app-react-router/stats/7.10.1.json @@ -4,6 +4,7 @@ "frameworkVersion": "7.10.1", "ssrOpsPerSec": 64, "ssrAvgLatencyMs": 15.528, + "ssrMedianLatencyMs": 0, "ssrSamples": 644, "ssrBodySizeKb": 211.14, "ssrDuplicationFactor": 2, diff --git a/packages/app-solid-start/ci-stats.json b/packages/app-solid-start/ci-stats.json index 284cf9bd..52535c24 100644 --- a/packages/app-solid-start/ci-stats.json +++ b/packages/app-solid-start/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "1.2.1", "ssrOpsPerSec": 263, "ssrAvgLatencyMs": 4.066, + "ssrMedianLatencyMs": 0, "ssrSamples": 2460, "ssrBodySizeKb": 227.79, "ssrDuplicationFactor": 2, diff --git a/packages/app-solid-start/stats/1.2.1.json b/packages/app-solid-start/stats/1.2.1.json index 284cf9bd..52535c24 100644 --- a/packages/app-solid-start/stats/1.2.1.json +++ b/packages/app-solid-start/stats/1.2.1.json @@ -4,6 +4,7 @@ "frameworkVersion": "1.2.1", "ssrOpsPerSec": 263, "ssrAvgLatencyMs": 4.066, + "ssrMedianLatencyMs": 0, "ssrSamples": 2460, "ssrBodySizeKb": 227.79, "ssrDuplicationFactor": 2, diff --git a/packages/app-sveltekit/ci-stats.json b/packages/app-sveltekit/ci-stats.json index 51859c35..f630e7f6 100644 --- a/packages/app-sveltekit/ci-stats.json +++ b/packages/app-sveltekit/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "2.49.4", "ssrOpsPerSec": 276, "ssrAvgLatencyMs": 3.725, + "ssrMedianLatencyMs": 0, "ssrSamples": 2685, "ssrBodySizeKb": 183.55, "ssrDuplicationFactor": 2, diff --git a/packages/app-sveltekit/stats/2.49.4.json b/packages/app-sveltekit/stats/2.49.4.json index 51859c35..f630e7f6 100644 --- a/packages/app-sveltekit/stats/2.49.4.json +++ b/packages/app-sveltekit/stats/2.49.4.json @@ -4,6 +4,7 @@ "frameworkVersion": "2.49.4", "ssrOpsPerSec": 276, "ssrAvgLatencyMs": 3.725, + "ssrMedianLatencyMs": 0, "ssrSamples": 2685, "ssrBodySizeKb": 183.55, "ssrDuplicationFactor": 2, diff --git a/packages/app-tanstack-start-react/ci-stats.json b/packages/app-tanstack-start-react/ci-stats.json index 571ab188..53fe5239 100644 --- a/packages/app-tanstack-start-react/ci-stats.json +++ b/packages/app-tanstack-start-react/ci-stats.json @@ -4,6 +4,7 @@ "frameworkVersion": "1.145.3", "ssrOpsPerSec": 179, "ssrAvgLatencyMs": 5.665, + "ssrMedianLatencyMs": 0, "ssrSamples": 1766, "ssrBodySizeKb": 193.53, "ssrDuplicationFactor": 2, diff --git a/packages/app-tanstack-start-react/stats/1.145.3.json b/packages/app-tanstack-start-react/stats/1.145.3.json index 571ab188..53fe5239 100644 --- a/packages/app-tanstack-start-react/stats/1.145.3.json +++ b/packages/app-tanstack-start-react/stats/1.145.3.json @@ -4,6 +4,7 @@ "frameworkVersion": "1.145.3", "ssrOpsPerSec": 179, "ssrAvgLatencyMs": 5.665, + "ssrMedianLatencyMs": 0, "ssrSamples": 1766, "ssrBodySizeKb": 193.53, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/components/SSRLatencyChart.astro b/packages/docs/src/components/SSRLatencyChart.astro index 5ed0ada7..968a6fe8 100644 --- a/packages/docs/src/components/SSRLatencyChart.astro +++ b/packages/docs/src/components/SSRLatencyChart.astro @@ -5,7 +5,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro' const data = ssrStats .map((f) => ({ name: f.name, - value: f.ssrMedianLatencyMs ?? f.ssrAvgLatencyMs, + value: f.ssrMedianLatencyMs, focused: f.isFocused, })) .filter((f) => f?.name != null && Number.isFinite(f.value)) diff --git a/packages/docs/src/components/SSRStatsTable.astro b/packages/docs/src/components/SSRStatsTable.astro index bc14324d..4d2bcbe8 100644 --- a/packages/docs/src/components/SSRStatsTable.astro +++ b/packages/docs/src/components/SSRStatsTable.astro @@ -25,7 +25,7 @@ const tableData = ssrStats.map((f) => ({ package: f.package, isFocused: f.package === 'app-baseline-html' ? true : f.isFocused, ssrOpsPerSec: f.ssrOpsPerSec?.toLocaleString() ?? '', - ssrLatencyMs: `${f.ssrMedianLatencyMs ?? f.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${f.ssrMedianLatencyMs}ms`, ssrBodySizeKb: `${f.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${f.ssrDuplicationFactor}x`, })) diff --git a/packages/docs/src/content.config.ts b/packages/docs/src/content.config.ts index ab33e5d0..491223fd 100644 --- a/packages/docs/src/content.config.ts +++ b/packages/docs/src/content.config.ts @@ -53,7 +53,7 @@ const runtimeCollection = defineCollection({ order: z.number(), ssrOpsPerSec: z.number(), ssrAvgLatencyMs: z.number(), - ssrMedianLatencyMs: z.number().optional(), + ssrMedianLatencyMs: z.number(), ssrSamples: z.number(), ssrBodySizeKb: z.number(), ssrDuplicationFactor: z.number(), diff --git a/packages/docs/src/content/runtime/app-astro.json b/packages/docs/src/content/runtime/app-astro.json index 97c338cd..aee984ff 100644 --- a/packages/docs/src/content/runtime/app-astro.json +++ b/packages/docs/src/content/runtime/app-astro.json @@ -5,6 +5,7 @@ "type": "ssr-app", "ssrOpsPerSec": 385, "ssrAvgLatencyMs": 2.628, + "ssrMedianLatencyMs": 0, "ssrSamples": 3806, "ssrBodySizeKb": 99.86, "ssrDuplicationFactor": 1, diff --git a/packages/docs/src/content/runtime/app-baseline-html.json b/packages/docs/src/content/runtime/app-baseline-html.json index 2a836092..12eab4cc 100644 --- a/packages/docs/src/content/runtime/app-baseline-html.json +++ b/packages/docs/src/content/runtime/app-baseline-html.json @@ -5,6 +5,7 @@ "isFocused": false, "ssrOpsPerSec": 766, "ssrAvgLatencyMs": 1.315, + "ssrMedianLatencyMs": 0, "ssrSamples": 7602, "ssrBodySizeKb": 96.81, "ssrDuplicationFactor": 1, diff --git a/packages/docs/src/content/runtime/app-mastro.json b/packages/docs/src/content/runtime/app-mastro.json index 4c45a11e..60c94877 100644 --- a/packages/docs/src/content/runtime/app-mastro.json +++ b/packages/docs/src/content/runtime/app-mastro.json @@ -7,6 +7,7 @@ "runner": "ubuntu-latest", "ssrOpsPerSec": 339, "ssrAvgLatencyMs": 2.983, + "ssrMedianLatencyMs": 0, "ssrSamples": 3353, "ssrBodySizeKb": 181.95, "ssrDuplicationFactor": 1, diff --git a/packages/docs/src/content/runtime/app-next-js.json b/packages/docs/src/content/runtime/app-next-js.json index 41fc1458..c4984f56 100644 --- a/packages/docs/src/content/runtime/app-next-js.json +++ b/packages/docs/src/content/runtime/app-next-js.json @@ -8,6 +8,7 @@ "frameworkVersion": "16.1.1", "ssrOpsPerSec": 125, "ssrAvgLatencyMs": 8.117, + "ssrMedianLatencyMs": 0, "ssrSamples": 1232, "ssrBodySizeKb": 199.11, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/content/runtime/app-nuxt.json b/packages/docs/src/content/runtime/app-nuxt.json index 35456e16..d0554753 100644 --- a/packages/docs/src/content/runtime/app-nuxt.json +++ b/packages/docs/src/content/runtime/app-nuxt.json @@ -5,6 +5,7 @@ "type": "ssr-app", "ssrOpsPerSec": 250, "ssrAvgLatencyMs": 4.076, + "ssrMedianLatencyMs": 0, "ssrSamples": 2454, "ssrBodySizeKb": 201.26, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/content/runtime/app-react-router.json b/packages/docs/src/content/runtime/app-react-router.json index ff4f6a97..adf5a890 100644 --- a/packages/docs/src/content/runtime/app-react-router.json +++ b/packages/docs/src/content/runtime/app-react-router.json @@ -8,6 +8,7 @@ "frameworkVersion": "7.10.1", "ssrOpsPerSec": 64, "ssrAvgLatencyMs": 15.528, + "ssrMedianLatencyMs": 0, "ssrSamples": 644, "ssrBodySizeKb": 211.14, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/content/runtime/app-solid-start.json b/packages/docs/src/content/runtime/app-solid-start.json index f10e63aa..dd1c7b02 100644 --- a/packages/docs/src/content/runtime/app-solid-start.json +++ b/packages/docs/src/content/runtime/app-solid-start.json @@ -8,6 +8,7 @@ "frameworkVersion": "1.2.1", "ssrOpsPerSec": 263, "ssrAvgLatencyMs": 4.066, + "ssrMedianLatencyMs": 0, "ssrSamples": 2460, "ssrBodySizeKb": 227.79, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/content/runtime/app-sveltekit.json b/packages/docs/src/content/runtime/app-sveltekit.json index 633efc14..89aaa051 100644 --- a/packages/docs/src/content/runtime/app-sveltekit.json +++ b/packages/docs/src/content/runtime/app-sveltekit.json @@ -8,6 +8,7 @@ "frameworkVersion": "2.49.4", "ssrOpsPerSec": 276, "ssrAvgLatencyMs": 3.725, + "ssrMedianLatencyMs": 0, "ssrSamples": 2685, "ssrBodySizeKb": 183.55, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/content/runtime/app-tanstack-start-react.json b/packages/docs/src/content/runtime/app-tanstack-start-react.json index 436db99c..7daa9b3d 100644 --- a/packages/docs/src/content/runtime/app-tanstack-start-react.json +++ b/packages/docs/src/content/runtime/app-tanstack-start-react.json @@ -8,6 +8,7 @@ "frameworkVersion": "1.145.3", "ssrOpsPerSec": 179, "ssrAvgLatencyMs": 5.665, + "ssrMedianLatencyMs": 0, "ssrSamples": 1766, "ssrBodySizeKb": 193.53, "ssrDuplicationFactor": 2, diff --git a/packages/docs/src/pages/framework/[slug].astro b/packages/docs/src/pages/framework/[slug].astro index a7519c48..9066d9c3 100644 --- a/packages/docs/src/pages/framework/[slug].astro +++ b/packages/docs/src/pages/framework/[slug].astro @@ -148,7 +148,7 @@ const ssrData = [ { name: baseline.name, ssrOpsPerSec: baseline.ssrOpsPerSec?.toLocaleString() ?? '', - ssrLatencyMs: `${baseline.ssrMedianLatencyMs ?? baseline.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${baseline.ssrMedianLatencyMs}ms`, ssrBodySizeKb: `${baseline.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${baseline.ssrDuplicationFactor}x`, }, @@ -159,7 +159,7 @@ const ssrData = [ { name: runtime.name, ssrOpsPerSec: runtime.ssrOpsPerSec?.toLocaleString() ?? '', - ssrLatencyMs: `${runtime.ssrMedianLatencyMs ?? runtime.ssrAvgLatencyMs}ms`, + ssrLatencyMs: `${runtime.ssrMedianLatencyMs}ms`, ssrBodySizeKb: `${runtime.ssrBodySizeKb}kb`, ssrDuplicationFactor: `${runtime.ssrDuplicationFactor}x`, }, diff --git a/packages/stats-generator/src/schemas.ts b/packages/stats-generator/src/schemas.ts index 69bf94b0..1493f0f1 100644 --- a/packages/stats-generator/src/schemas.ts +++ b/packages/stats-generator/src/schemas.ts @@ -22,7 +22,7 @@ export const BuildStatsSchema = z.object({ export const SSRStatsSchema = z.object({ ssrOpsPerSec: z.number().positive(), ssrAvgLatencyMs: z.number().nonnegative(), - ssrMedianLatencyMs: z.number().nonnegative().optional(), + ssrMedianLatencyMs: z.number().nonnegative(), ssrSamples: z.number().positive(), ssrBodySizeKb: z.number().positive(), ssrDuplicationFactor: z.number().nonnegative(), diff --git a/packages/stats-generator/src/ssr/types.ts b/packages/stats-generator/src/ssr/types.ts index 494fd9d8..173b7976 100644 --- a/packages/stats-generator/src/ssr/types.ts +++ b/packages/stats-generator/src/ssr/types.ts @@ -29,7 +29,7 @@ export interface SSRStats { type: 'ssr-app' ssrOpsPerSec: number ssrAvgLatencyMs: number - ssrMedianLatencyMs?: number + ssrMedianLatencyMs: number ssrSamples: number ssrBodySizeKb: number ssrDuplicationFactor: number