mirror of https://github.com/sveltejs/svelte
chore: add ssr benchmark suite (#14361)
* chore: add ssr benchmark suite * lint * Update benchmarking/run.js Co-authored-by: Rich Harris <rich.harris@vercel.com> --------- Co-authored-by: Rich Harris <rich.harris@vercel.com>pull/14363/head
parent
6e8267f462
commit
f6117bb328
@ -0,0 +1 @@
|
|||||||
|
output
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
import { busy } from './util.js';
|
import { busy } from './util.js';
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
let head = $.state(0);
|
let head = $.state(0);
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
let len = 50;
|
let len = 50;
|
||||||
const iter = 50;
|
const iter = 50;
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
let width = 5;
|
let width = 5;
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
let heads = new Array(100).fill(null).map((_) => $.state(0));
|
let heads = new Array(100).fill(null).map((_) => $.state(0));
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
let size = 30;
|
let size = 30;
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
let width = 10;
|
let width = 10;
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../../utils.js';
|
import { assert, fastest_test } from '../../../utils.js';
|
||||||
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
let head = $.state(0);
|
let head = $.state(0);
|
@ -1,5 +1,5 @@
|
|||||||
import { assert, fastest_test } from '../utils.js';
|
import { assert, fastest_test } from '../../utils.js';
|
||||||
import * as $ from '../../packages/svelte/src/internal/client/index.js';
|
import * as $ from 'svelte/internal/client';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {number} n
|
* @param {number} n
|
@ -1,5 +1,5 @@
|
|||||||
import { fastest_test } from '../utils.js';
|
import { fastest_test } from '../../utils.js';
|
||||||
import * as $ from '../../packages/svelte/src/internal/client/index.js';
|
import * as $ from '../../../packages/svelte/src/internal/client/index.js';
|
||||||
|
|
||||||
const COUNT = 1e5;
|
const COUNT = 1e5;
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
import { wrapper_bench } from './wrapper/wrapper_bench.js';
|
||||||
|
|
||||||
|
export const ssr_benchmarks = [wrapper_bench];
|
@ -0,0 +1,31 @@
|
|||||||
|
<script>
|
||||||
|
const wrapperWidth = 960;
|
||||||
|
const wrapperHeight = 720;
|
||||||
|
const cellSize = 10;
|
||||||
|
const centerX = wrapperWidth / 2;
|
||||||
|
const centerY = wrapperHeight / 2;
|
||||||
|
|
||||||
|
let angle = 0;
|
||||||
|
let radius = 0;
|
||||||
|
|
||||||
|
let tiles = [];
|
||||||
|
const step = cellSize;
|
||||||
|
|
||||||
|
while (radius < Math.min(wrapperWidth, wrapperHeight) / 2) {
|
||||||
|
let x = centerX + Math.cos(angle) * radius;
|
||||||
|
let y = centerY + Math.sin(angle) * radius;
|
||||||
|
|
||||||
|
if (x >= 0 && x <= wrapperWidth - cellSize && y >= 0 && y <= wrapperHeight - cellSize) {
|
||||||
|
tiles.push({ x, y });
|
||||||
|
}
|
||||||
|
|
||||||
|
angle += 0.2;
|
||||||
|
radius += step * 0.015;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="wrapper">
|
||||||
|
{#each tiles as { x, y }}
|
||||||
|
<div class="tile" style="left: {x.toFixed(2)}px; top: {y.toFixed(2)}px;"></div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
@ -0,0 +1,36 @@
|
|||||||
|
import { render } from 'svelte/server';
|
||||||
|
import { fastest_test, read_file, write } from '../../../utils.js';
|
||||||
|
import { compile } from 'svelte/compiler';
|
||||||
|
|
||||||
|
const dir = `${process.cwd()}/benchmarking/benchmarks/ssr/wrapper`;
|
||||||
|
|
||||||
|
async function compile_svelte() {
|
||||||
|
const output = compile(read_file(`${dir}/App.svelte`), {
|
||||||
|
generate: 'server'
|
||||||
|
});
|
||||||
|
write(`${dir}/output/App.js`, output.js.code);
|
||||||
|
|
||||||
|
const module = await import(`${dir}/output/App.js`);
|
||||||
|
|
||||||
|
return module.default;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function wrapper_bench() {
|
||||||
|
const App = await compile_svelte();
|
||||||
|
// Do 3 loops to warm up JIT
|
||||||
|
for (let i = 0; i < 3; i++) {
|
||||||
|
render(App);
|
||||||
|
}
|
||||||
|
|
||||||
|
const { timing } = await fastest_test(10, () => {
|
||||||
|
for (let i = 0; i < 100; i++) {
|
||||||
|
render(App);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
benchmark: 'wrapper_bench',
|
||||||
|
time: timing.time.toFixed(2),
|
||||||
|
gc_time: timing.gc_time.toFixed(2)
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in new issue