async function withMeasure(label: string = 'Measurement', fn: () => Promise) { function bytes2MB(bytes: number): number { return bytes / (1024 * 1024) } const pstart = performance.now() const mstart = process.memoryUsage().heapUsed const result = await fn() const mend = process.memoryUsage().heapUsed const mused = mend - mstart const pend = performance.now() const duration = pend - pstart console.log(`${label}: ${duration} milliseconds ${mused} bytes ${bytes2MB(mused)} MB`) console.log(`mStart: ${mstart} mEnd: ${mend} bytes`) console.log(`pStart: ${pstart} pEnd: ${pend} bytes`) console.log('---') return result }