From dd9ebfc4d08437a58d84231e2c827be556669227 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Sun, 31 Mar 2024 10:16:59 +0800 Subject: [PATCH] add measureExecutionTime --- packages/ui/src/common/utils/performance.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/ui/src/common/utils/performance.ts diff --git a/packages/ui/src/common/utils/performance.ts b/packages/ui/src/common/utils/performance.ts new file mode 100644 index 0000000..f4f4135 --- /dev/null +++ b/packages/ui/src/common/utils/performance.ts @@ -0,0 +1,21 @@ +export const measureExecutionTime = async < + T extends Promise | ((...args: unknown[]) => unknown), + U = T extends Promise + ? T + : T extends (...args: unknown[]) => unknown + ? ReturnType + : never +>( + promiseOrFunction: T +): Promise => { + const startTime = new Date() + if (promiseOrFunction instanceof Promise) { + await promiseOrFunction + console.log(`execution duration ${Number(new Date()) - Number(startTime)}ms`) + return promiseOrFunction as U + } else { + const result = await promiseOrFunction() + console.log(`execution duration ${Number(new Date()) - Number(startTime)}ms`) + return result as U + } +}