From a9e4ff2029a769737982fcf7e0b7d76d35cf35e4 Mon Sep 17 00:00:00 2001 From: evan Date: Tue, 12 Jul 2022 04:40:12 -0400 Subject: cleanup benchmarks folder (#587) * cleanup benchmarks * run prettier --- bench/gzip/deno.js | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 bench/gzip/deno.js (limited to 'bench/gzip/deno.js') diff --git a/bench/gzip/deno.js b/bench/gzip/deno.js new file mode 100644 index 000000000..66c858e55 --- /dev/null +++ b/bench/gzip/deno.js @@ -0,0 +1,85 @@ +import { run, bench } from "../node_modules/mitata/src/cli.mjs"; + +const data = new TextEncoder().encode("Hello World!".repeat(9999)); + +const compressed = await compress(data); + +bench(`roundtrip - "Hello World!".repeat(9999))`, async () => { + await decompress(await compress(data)); +}); + +bench(`gzip("Hello World!".repeat(9999)))`, async () => { + await compress(data); +}); + +bench(`gunzip("Hello World!".repeat(9999)))`, async () => { + await decompress(compressed); +}); + +await run(); + +async function compress(buffer) { + const cs = new CompressionStream("gzip"); + + const writer = cs.writable.getWriter(); + + writer.write(buffer); + + writer.close(); + const chunks = []; + const reader = cs.readable.getReader(); + + let length = 0; + + while (true) { + const { done, value } = await reader.read(); + + if (done) break; + chunks.push(value); + length += value.length; + } + + const u8 = new Uint8Array(length); + + let offset = 0; + + for (const chunk of chunks) { + u8.set(chunk, offset); + offset += chunk.length; + } + + return u8; +} + +async function decompress(buffer) { + const ds = new DecompressionStream("gzip"); + + const writer = ds.writable.getWriter(); + + writer.write(buffer); + + writer.close(); + const chunks = []; + const reader = ds.readable.getReader(); + + let length = 0; + + while (true) { + const { done, value } = await reader.read(); + + if (done) break; + chunks.push(value); + length += value.length; + } + + const u8 = new Uint8Array(length); + + let offset = 0; + + for (const chunk of chunks) { + u8.set(chunk, offset); + offset += chunk.length; + } + + return u8; +} -- cgit v1.2.3