@uifabric/utilities
Version:
Fluent UI React utilities for building components.
53 lines • 1.89 kB
JavaScript
var now = function () {
return typeof performance !== 'undefined' && !!performance.now ? performance.now() : Date.now();
};
var RESET_INTERVAL = 3 * 60 * 1000; // auto reset every 3 minutes
/**
* Performance helper class for measuring things.
*
* @public
* {@docCategory FabricPerformance}
*/
var FabricPerformance = /** @class */ (function () {
function FabricPerformance() {
}
/**
* Measures execution time of the given syncronous function. If the same logic is executed multiple times,
* each individual measurement will be collected as well the overall numbers.
* @param name - The name of this measurement
* @param func - The logic to be measured for execution time
*/
FabricPerformance.measure = function (name, func) {
if (FabricPerformance._timeoutId) {
FabricPerformance.setPeriodicReset();
}
var start = now();
func();
var end = now();
var measurement = FabricPerformance.summary[name] || {
totalDuration: 0,
count: 0,
all: [],
};
var duration = end - start;
measurement.totalDuration += duration;
measurement.count++;
measurement.all.push({
duration: duration,
timeStamp: end,
});
FabricPerformance.summary[name] = measurement;
};
FabricPerformance.reset = function () {
FabricPerformance.summary = {};
clearTimeout(FabricPerformance._timeoutId);
FabricPerformance._timeoutId = NaN;
};
FabricPerformance.setPeriodicReset = function () {
FabricPerformance._timeoutId = setTimeout(function () { return FabricPerformance.reset(); }, RESET_INTERVAL);
};
FabricPerformance.summary = {};
return FabricPerformance;
}());
export { FabricPerformance };
//# sourceMappingURL=FabricPerformance.js.map