From ac46facc460b84532e82fe200575548475a3b313 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Sat, 9 Oct 2021 14:43:46 +0300 Subject: [PATCH] perf: use thread pool for encryption/decryption --- backend/src/utils/crypt.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/backend/src/utils/crypt.ts b/backend/src/utils/crypt.ts index 1d428150..9a6cf7eb 100644 --- a/backend/src/utils/crypt.ts +++ b/backend/src/utils/crypt.ts @@ -1,4 +1,4 @@ -import { spawn, Worker } from "threads"; +import { spawn, Worker, Pool } from "threads"; import "../loadEnv"; import type { CryptFns } from "./cryptWorker"; @@ -9,19 +9,12 @@ if (!process.env.KEY) { } const KEY = process.env.KEY; -let workerPromise: Promise | null = null; - -async function getWorker(): Promise { - if (workerPromise == null) { - workerPromise = spawn(new Worker("./cryptWorker")) as unknown as Promise; - } - return workerPromise; -} +const pool = Pool(() => spawn(new Worker("./cryptWorker")), 8); export async function encrypt(data: string) { - return (await getWorker()).encrypt(data, KEY); + return pool.queue((w) => w.encrypt(data, KEY)); } export async function decrypt(data: string) { - return (await getWorker()).decrypt(data, KEY); + return pool.queue((w) => w.decrypt(data, KEY)); }