refactored performance caching to seperate service
parent
944f5bf686
commit
fd7ac46a12
@ -0,0 +1,53 @@
|
||||
// Service for retrieving and caching performance data
|
||||
panelApp.factory('appPerf', function (chromeExtension) {
|
||||
|
||||
var _histogramCache = [],
|
||||
_watchNameToPerf = {},
|
||||
_totalCache = 0;
|
||||
|
||||
var getHistogramData = function (callback) {
|
||||
chromeExtension.eval(function (window) {
|
||||
if (!window.__ngDebug) {
|
||||
return {};
|
||||
}
|
||||
return window.__ngDebug.getWatchPerf();
|
||||
},
|
||||
function (data) {
|
||||
if (data && data.length) {
|
||||
updateHistogram(data);
|
||||
}
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
var updateHistogram = function (data) {
|
||||
data.forEach(function (info) {
|
||||
_totalCache += info.time;
|
||||
|
||||
if (_watchNameToPerf[info.name]) {
|
||||
_watchNameToPerf[info.name].time += info.time;
|
||||
} else {
|
||||
_watchNameToPerf[info.name] = info;
|
||||
_histogramCache.push(info);
|
||||
}
|
||||
});
|
||||
|
||||
// recalculate all percentages
|
||||
_histogramCache.forEach(function (item) {
|
||||
item.percent = (100 * item.time / _totalCache).toPrecision(3);
|
||||
});
|
||||
};
|
||||
|
||||
// Public API
|
||||
// ==========
|
||||
return {
|
||||
get: function (callback) {
|
||||
getHistogramData(function () {
|
||||
callback(_histogramCache);
|
||||
});
|
||||
},
|
||||
clear: function () {
|
||||
_histogramCache = [];
|
||||
}
|
||||
};
|
||||
});
|
Reference in New Issue