UNPKG

@uifabric/utilities

Version:

Fluent UI React utilities for building components.

1 lines 3.56 kB
{"version":3,"file":"FabricPerformance.js","sourceRoot":"../src/","sources":["FabricPerformance.ts"],"names":[],"mappings":"AAgCA,IAAM,GAAG,GAAiB;IACxB,OAAA,OAAO,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAAxF,CAAwF,CAAC;AAE3F,IAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAEnE;;;;;GAKG;AACH;IAAA;IAyCA,CAAC;IArCC;;;;;OAKG;IACW,yBAAO,GAArB,UAAsB,IAAY,EAAE,IAAgB;QAClD,IAAI,iBAAiB,CAAC,UAAU,EAAE;YAChC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;SACtC;QACD,IAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,EAAE,CAAC;QACP,IAAM,GAAG,GAAG,GAAG,EAAE,CAAC;QAClB,IAAM,WAAW,GAAqB,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;YACvE,aAAa,EAAE,CAAC;YAChB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,EAAE;SACR,CAAC;QACF,IAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;QAC7B,WAAW,CAAC,aAAa,IAAI,QAAQ,CAAC;QACtC,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QACH,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAChD,CAAC;IAEa,uBAAK,GAAnB;QACE,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/B,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC3C,iBAAiB,CAAC,UAAU,GAAG,GAAG,CAAC;IACrC,CAAC;IAEa,kCAAgB,GAA9B;QACE,iBAAiB,CAAC,UAAU,GAAG,UAAU,CAAC,cAAM,OAAA,iBAAiB,CAAC,KAAK,EAAE,EAAzB,CAAyB,EAAE,cAAc,CAAC,CAAC;IAC7F,CAAC;IAvCa,yBAAO,GAAiB,EAAE,CAAC;IAwC3C,wBAAC;CAAA,AAzCD,IAyCC;SAzCY,iBAAiB","sourcesContent":["declare const setTimeout: (cb: () => void, delay: number) => number;\n\n/**\n * PerfData interface.\n *\n * @internal\n */\nexport interface IPerfData {\n duration: number;\n timeStamp: number;\n}\n\n/**\n * PerfMeasurement interface.\n *\n * @internal\n */\nexport interface IPerfMeasurement {\n totalDuration: number;\n count: number;\n all: IPerfData[];\n}\n\n/**\n * PerfSummary interface.\n *\n * @internal\n */\nexport interface IPerfSummary {\n [key: string]: IPerfMeasurement;\n}\n\nconst now: () => number = () =>\n typeof performance !== 'undefined' && !!performance.now ? performance.now() : Date.now();\n\nconst RESET_INTERVAL = 3 * 60 * 1000; // auto reset every 3 minutes\n\n/**\n * Performance helper class for measuring things.\n *\n * @public\n * {@docCategory FabricPerformance}\n */\nexport class FabricPerformance {\n public static summary: IPerfSummary = {};\n private static _timeoutId: number;\n\n /**\n * Measures execution time of the given syncronous function. If the same logic is executed multiple times,\n * each individual measurement will be collected as well the overall numbers.\n * @param name - The name of this measurement\n * @param func - The logic to be measured for execution time\n */\n public static measure(name: string, func: () => void): void {\n if (FabricPerformance._timeoutId) {\n FabricPerformance.setPeriodicReset();\n }\n const start = now();\n func();\n const end = now();\n const measurement: IPerfMeasurement = FabricPerformance.summary[name] || {\n totalDuration: 0,\n count: 0,\n all: [],\n };\n const duration = end - start;\n measurement.totalDuration += duration;\n measurement.count++;\n measurement.all.push({\n duration: duration,\n timeStamp: end,\n });\n FabricPerformance.summary[name] = measurement;\n }\n\n public static reset(): void {\n FabricPerformance.summary = {};\n clearTimeout(FabricPerformance._timeoutId);\n FabricPerformance._timeoutId = NaN;\n }\n\n public static setPeriodicReset(): void {\n FabricPerformance._timeoutId = setTimeout(() => FabricPerformance.reset(), RESET_INTERVAL);\n }\n}\n"]}