Files
geekgeekrun/packages/ui/src/common/utils/performance.ts
2024-03-29 09:35:48 +08:00

22 lines
668 B
TypeScript

export const measureExecutionTime = async <
T extends Promise<unknown> | ((...args: unknown[]) => unknown),
U = T extends Promise<unknown>
? T
: T extends (...args: unknown[]) => unknown
? ReturnType<T>
: never
>(
promiseOrFunction: T
): Promise<U> => {
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
}
}