1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-30 02:59:11 -05:00
denoland-deno/cli/bench/fs/serve.jsx

58 lines
1.3 KiB
React
Raw Normal View History

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
/** @jsx h */
import results from "./deno.json" assert { type: "json" };
import nodeResults from "./node.json" assert { type: "json" };
import { h, ssr } from "https://crux.land/nanossr@0.0.4";
import { router } from "https://crux.land/router@0.0.11";
function once(fn) {
let called = false;
let result;
return function () {
if (!called) {
called = true;
result = fn();
return result;
}
return result;
};
}
const body = once(() =>
Object.entries(results).map(([name, data]) => (
<tr>
<td class="border px-4 py-2">{name}</td>
<td class="border px-4 py-2">
{data.reduce((a, b) => a + b, 0) / data.length} ops/sec
</td>
<td class="border px-4 py-2">
{nodeResults[name].reduce((a, b) => a + b, 0) /
nodeResults[name].length} ops/sec
</td>
</tr>
))
);
function App() {
return (
<table class="table-auto">
<thead>
<tr>
<th class="px-4 py-2">Benchmark</th>
<th class="px-4 py-2">Deno</th>
<th class="px-4 py-2">Node</th>
</tr>
</thead>
<tbody>
{body()}
</tbody>
</table>
);
}
const { serve } = Deno;
serve(router({
"/": () => ssr(() => <App />),
}));