diff options
Diffstat (limited to 'cli/bench/fs/serve.jsx')
-rw-r--r-- | cli/bench/fs/serve.jsx | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cli/bench/fs/serve.jsx b/cli/bench/fs/serve.jsx new file mode 100644 index 000000000..3ef07c6a0 --- /dev/null +++ b/cli/bench/fs/serve.jsx @@ -0,0 +1,57 @@ +// Copyright 2018-2022 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 />), +})); |