Skip to content

Instantly share code, notes, and snippets.

@arturokunder
Created August 19, 2016 20:34
Show Gist options
  • Save arturokunder/5eef33b3917ea7d58d442f15f7fca4ef to your computer and use it in GitHub Desktop.
Save arturokunder/5eef33b3917ea7d58d442f15f7fca4ef to your computer and use it in GitHub Desktop.
Javascript simple profiler
window.profiler = (function() {
var _events = {};
var _getEvents = function(name, domain) {
if(!name) {
return {};
}
if(!domain) {
domain = '';
}
if(!_events[domain]) {
_events[domain] = {};
}
if(!_events[domain][name]) {
_events[domain][name] = {
name: name,
domain: domain
};
}
return _events[domain][name];
};
var _setEvent = function(event, name, domain) {
if(!name) {
return {};
}
if(!domain) {
domain = '';
}
if(!_events[domain]) {
_events[domain] = {};
}
_events[domain][name] = event;
};
var _setTimestamp = function(name, domain, action) {
var a = _getEvents(name, domain);
a[action] = new Date();
_setEvent(a, name, domain);
};
var _start = function(name, domain) {
return _setTimestamp(name, domain, 'start');
};
var _stop = function(name, domain) {
return _setTimestamp(name, domain, 'stop');
};
var _getLog = function() {
var log = 'nombre,domain,start,stop,duration (sec)\n';
for(var i in _events) {
for(var j in _events[i]) {
var item = _events[i][j];
var duration = item.start && item.stop ? (item.stop - item.start) / 1000 : 0;
var start = item.start ? item.start.getTime() : 0;
var stop = item.stop ? item.stop.getTime() : 0;
log += item.name + ',' + item.domain + ',' + start + ',' + stop + ',' + duration + '\n'
}
}
console.log(log);
};
return {
start: _start,
stop: _stop,
getLog: _getLog
};
})();
// MINIMIZADO
window.profiler=function(){var t={},n=function(n,r){return n?(r||(r=""),t[r]||(t[r]={}),t[r][n]||(t[r][n]={name:n,domain:r}),t[r][n]):{}},r=function(n,r,o){return r?(o||(o=""),t[o]||(t[o]={}),void(t[o][r]=n)):{}},o=function(t,o,a){var e=n(t,o);e[a]=new Date,r(e,t,o)},a=function(t,n){return o(t,n,"start")},e=function(t,n){return o(t,n,"stop")},i=function(){var n="nombre,domain,start,stop,duration (sec)\n";for(var r in t)for(var o in t[r]){var a=t[r][o],e=a.start&&a.stop?(a.stop-a.start)/1e3:0,i=a.start?a.start.getTime():0,s=a.stop?a.stop.getTime():0;n+=a.name+","+a.domain+","+i+","+s+","+e+"\n"}console.log(n)};return{start:a,stop:e,getLog:i}}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment