const events: Record = {}; export class Profiler { public static tag(id: string, eventName: string): void { const event = { name: eventName, date: Date.now(), }; if (Object.prototype.hasOwnProperty.call(events, id)) { events[id].push(event); } else { events[id] = [event]; } } public static printable(id: string): string { let start = null; let message = 'Event\tTime\tTook\n'; for (let i = 0; i < events[id].length; i += 1) { if (!start) { start = events[id][i].date; } const took = (events[id][i].date - start) / 1000; let diff = 0; if (i > 0) { diff = (events[id][i].date - events[id][i - 1].date) / 1000; } message += `${events[id][i].name}\t${took}\t${diff}\n`; } return message; } public static clean(id: string): void { delete events[id]; } }