From 3a2fd65f20d3b4e99c89f789acec5e5e40615008 Mon Sep 17 00:00:00 2001 From: dave caruso Date: Fri, 14 Apr 2023 00:55:01 -0400 Subject: use a lazyily initialized stream for `node:crypto` `createHash` (#2652) * lazy hash * finish up crypto stuff * remove lockfiles * ok * add pipe test * update this lockfile * remove unrelated crypto benchmark from this file --- bench/snippets/crypto-2190.mjs | 29 +++++++++++++++++++++++++++++ bench/snippets/crypto-stream.mjs | 26 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 bench/snippets/crypto-2190.mjs create mode 100644 bench/snippets/crypto-stream.mjs (limited to 'bench/snippets') diff --git a/bench/snippets/crypto-2190.mjs b/bench/snippets/crypto-2190.mjs new file mode 100644 index 000000000..dab54f1fd --- /dev/null +++ b/bench/snippets/crypto-2190.mjs @@ -0,0 +1,29 @@ +// https://github.com/oven-sh/bun/issues/2190 +import { bench, run } from "mitata"; +import { createHash } from "node:crypto"; + +const data = + "Delightful remarkably mr on announcing themselves entreaties favourable. About to in so terms voice at. Equal an would is found seems of. The particular friendship one sufficient terminated frequently themselves. It more shed went up is roof if loud case. Delay music in lived noise an. Beyond genius really enough passed is up."; + +const scenarios = [ + { alg: "md5", digest: "hex" }, + { alg: "md5", digest: "base64" }, + { alg: "sha1", digest: "hex" }, + { alg: "sha1", digest: "base64" }, + { alg: "sha256", digest: "hex" }, + { alg: "sha256", digest: "base64" }, +]; + +for (const { alg, digest } of scenarios) { + bench(`${alg}-${digest}`, () => { + createHash(alg).update(data).digest(digest); + }); + + if ("Bun" in globalThis) { + bench(`${alg}-${digest} (Bun.CryptoHasher)`, () => { + new Bun.CryptoHasher(alg).update(data).digest(digest); + }); + } +} + +run(); diff --git a/bench/snippets/crypto-stream.mjs b/bench/snippets/crypto-stream.mjs new file mode 100644 index 000000000..3560563d9 --- /dev/null +++ b/bench/snippets/crypto-stream.mjs @@ -0,0 +1,26 @@ +// https://github.com/oven-sh/bun/issues/2190 +import { bench, run } from "mitata"; +import { createHash } from "node:crypto"; + +const data = + "Delightful remarkably mr on announcing themselves entreaties favourable. About to in so terms voice at. Equal an would is found seems of. The particular friendship one sufficient terminated frequently themselves. It more shed went up is roof if loud case. Delay music in lived noise an. Beyond genius really enough passed is up."; + +const scenarios = [ + { alg: "md5", digest: "hex" }, + { alg: "md5", digest: "base64" }, + { alg: "sha1", digest: "hex" }, + { alg: "sha1", digest: "base64" }, + { alg: "sha256", digest: "hex" }, + { alg: "sha256", digest: "base64" }, +]; + +for (const { alg, digest } of scenarios) { + bench(`${alg}-${digest}`, () => { + const hasher = createHash(alg); + hasher.write(data); + hasher.end(); + hasher.read(); + }); +} + +run(); -- cgit v1.2.3