diff --git a/packages/docusaurus-logger/src/perfLogger.ts b/packages/docusaurus-logger/src/perfLogger.ts index 77b911dd94..7f9575c18c 100644 --- a/packages/docusaurus-logger/src/perfLogger.ts +++ b/packages/docusaurus-logger/src/perfLogger.ts @@ -114,12 +114,24 @@ function createPerfLogger(): PerfLoggerAPI { }, }); - const end: PerfLoggerAPI['end'] = (label) => { - const { - duration, - detail: {memoryUsage}, - } = performance.measure(label); + const readMark = (label: string) => { + const startMark = performance.getEntriesByName( + label, + 'mark', + )?.[0] as PerformanceMark; + if (!startMark) { + throw new Error(`No performance start mark for label=${label}`); + } performance.clearMarks(label); + return startMark; + }; + + const end: PerfLoggerAPI['end'] = (label) => { + const startMark = readMark(label); + const duration = performance.now() - startMark.startTime; + const { + detail: {memoryUsage}, + } = startMark; printPerfLog({ label: applyParentPrefix(label), duration,