mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
import { bench, run } from "../runner.mjs";
|
|
import zlib from "node:zlib";
|
|
import { promisify } from "node:util";
|
|
|
|
const deflate = promisify(zlib.deflate);
|
|
const inflate = promisify(zlib.inflate);
|
|
|
|
const short = "Hello World!";
|
|
const long = "Hello World!".repeat(1024);
|
|
const veryLong = "Hello World!".repeat(10240);
|
|
|
|
// Pre-compress some data for decompression tests
|
|
const shortBuf = Buffer.from(short);
|
|
const longBuf = Buffer.from(long);
|
|
const veryLongBuf = Buffer.from(veryLong);
|
|
|
|
let [shortCompressed, longCompressed, veryLongCompressed] = await Promise.all([
|
|
deflate(shortBuf, { level: 6 }),
|
|
deflate(longBuf, { level: 6 }),
|
|
deflate(veryLongBuf, { level: 6 }),
|
|
]);
|
|
|
|
const format = new Intl.NumberFormat("en-US", { notation: "compact", unit: "byte" });
|
|
// Compression tests at different levels
|
|
bench(`deflate ${format.format(short.length)}B (level 1)`, async () => {
|
|
await deflate(shortBuf, { level: 1 });
|
|
});
|
|
|
|
bench(`deflate ${format.format(short.length)} (level 6)`, async () => {
|
|
await deflate(shortBuf, { level: 6 });
|
|
});
|
|
|
|
bench(`deflate ${format.format(long.length)} (level 1)`, async () => {
|
|
await deflate(longBuf, { level: 1 });
|
|
});
|
|
|
|
bench(`deflate ${format.format(long.length)} (level 6)`, async () => {
|
|
await deflate(longBuf, { level: 6 });
|
|
});
|
|
|
|
bench(`deflate ${format.format(veryLong.length)} (level 1)`, async () => {
|
|
await deflate(veryLongBuf, { level: 1 });
|
|
});
|
|
|
|
bench(`deflate ${format.format(veryLong.length)} (level 6)`, async () => {
|
|
await deflate(veryLongBuf, { level: 6 });
|
|
});
|
|
|
|
// Decompression tests
|
|
bench(`inflate ${format.format(short.length)}`, async () => {
|
|
await inflate(shortCompressed);
|
|
});
|
|
|
|
bench(`inflate ${format.format(long.length)}`, async () => {
|
|
await inflate(longCompressed);
|
|
});
|
|
|
|
bench(`inflate ${format.format(veryLong.length)}`, async () => {
|
|
await inflate(veryLongCompressed);
|
|
});
|
|
|
|
await run();
|