diff options
author | 2022-07-12 04:40:12 -0400 | |
---|---|---|
committer | 2022-07-12 01:40:12 -0700 | |
commit | a9e4ff2029a769737982fcf7e0b7d76d35cf35e4 (patch) | |
tree | 497832408d926e2bed779fcec4ba655624a29792 /bench/gzip/deno.js | |
parent | 7eea306b0ff46a27f134809a9b3c12bf4b38fa7e (diff) | |
download | bun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.tar.gz bun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.tar.zst bun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.zip |
cleanup benchmarks folder (#587)
* cleanup benchmarks
* run prettier
Diffstat (limited to 'bench/gzip/deno.js')
-rw-r--r-- | bench/gzip/deno.js | 85 |
1 files changed, 85 insertions, 0 deletions
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; +} |