From e64ec5f9df7115d3d969dfe84f11ef4aa0af5f33 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Thu, 14 Nov 2024 16:26:50 +0000 Subject: [PATCH] chore: breakdown of benchmarks (#12433) --- benchmark/bench/codspeed.js | 78 ++++++++++++++---------- benchmark/packages/adapter/src/server.ts | 2 - 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/benchmark/bench/codspeed.js b/benchmark/bench/codspeed.js index 2ad783e8aa7d..2643b1ec8a5f 100644 --- a/benchmark/bench/codspeed.js +++ b/benchmark/bench/codspeed.js @@ -2,7 +2,6 @@ import path from 'node:path'; import { withCodSpeed } from '@codspeed/tinybench-plugin'; import { Bench } from 'tinybench'; import { exec } from 'tinyexec'; -import { renderPages } from '../make-project/render-default.js'; import { astroBin } from './_util.js'; export async function run({ memory: _memory, render, stress: _stress }) { @@ -10,40 +9,55 @@ export async function run({ memory: _memory, render, stress: _stress }) { iterations: 10, }; const bench = process.env.CODSPEED ? withCodSpeed(new Bench(options)) : new Bench(options); - let app; - bench.add( - 'Rendering', - async () => { + await exec(astroBin, ['build'], { + nodeOptions: { + cwd: render.root, + stdio: 'inherit', + }, + }); + + const entry = new URL('./dist/server/entry.mjs', `file://${render.root}`); + const { manifest, createApp } = await import(entry); + const streamingApp = createApp(manifest, true); + const nonStreamingApp = createApp(manifest, false); + bench + .add('Rendering: streaming [true], .astro file', async () => { console.info('Start task.'); - const result = {}; - for (const fileName of renderPages) { - const pathname = '/' + fileName.slice(0, -path.extname(fileName).length); - const request = new Request(new URL(pathname, 'http://exmpale.com')); - const response = await app.render(request); - const html = await response.text(); - if (!result[pathname]) result[pathname] = []; - result[pathname].push(html); - } + const request = new Request(new URL('http://exmpale.com/astro')); + await streamingApp.render(request); console.info('Finish task.'); - return result; - }, - { - async beforeAll() { - // build for rendering - await exec(astroBin, ['build'], { - nodeOptions: { - cwd: render.root, - stdio: 'inherit', - }, - }); + }) + .add('Rendering: streaming [true], .md file', async () => { + console.info('Start task.'); + const request = new Request(new URL('http://exmpale.com/md')); + await streamingApp.render(request); + console.info('Finish task.'); + }) + .add('Rendering: streaming [true], .mdx file', async () => { + console.info('Start task.'); + const request = new Request(new URL('http://exmpale.com/mdx')); + await streamingApp.render(request); + console.info('Finish task.'); + }) - const entry = new URL('./dist/server/entry.mjs', `file://${render.root}`); - const { manifest, createApp } = await import(entry); - app = createApp(manifest); - app.manifest = manifest; - }, - }, - ); + .add('Rendering: streaming [false], .astro file', async () => { + console.info('Start task.'); + const request = new Request(new URL('http://exmpale.com/astro')); + await nonStreamingApp.render(request); + console.info('Finish task.'); + }) + .add('Rendering: streaming [false], .md file', async () => { + console.info('Start task.'); + const request = new Request(new URL('http://exmpale.com/md')); + await nonStreamingApp.render(request); + console.info('Finish task.'); + }) + .add('Rendering: streaming [false], .mdx file', async () => { + console.info('Start task.'); + const request = new Request(new URL('http://exmpale.com/mdx')); + await nonStreamingApp.render(request); + console.info('Finish task.'); + }); await bench.run(); console.table(bench.table()); diff --git a/benchmark/packages/adapter/src/server.ts b/benchmark/packages/adapter/src/server.ts index ca69fe28f262..10e212adbedd 100644 --- a/benchmark/packages/adapter/src/server.ts +++ b/benchmark/packages/adapter/src/server.ts @@ -7,11 +7,9 @@ applyPolyfills(); class MyApp extends App { #manifest: SSRManifest | undefined; - #streaming: boolean; constructor(manifest: SSRManifest, streaming = false) { super(manifest, streaming); this.#manifest = manifest; - this.#streaming = streaming; } async render(request: Request) {