From 612d831a294d7833d73177c78d2040f21d825903 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Wed, 2 Aug 2023 20:34:21 +0000 Subject: [PATCH] added `PerformanceLog` class --- .../app/src/classes/PerformanceLog/index.js | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 packages/app/src/classes/PerformanceLog/index.js diff --git a/packages/app/src/classes/PerformanceLog/index.js b/packages/app/src/classes/PerformanceLog/index.js new file mode 100644 index 00000000..528f6c38 --- /dev/null +++ b/packages/app/src/classes/PerformanceLog/index.js @@ -0,0 +1,53 @@ +export default class PerformanceLog { + constructor( + id, + params = { + disabled: false + } + ) { + this.id = id + this.params = params + + this.table = {} + + return this + } + + start(event) { + if (this.params.disabled) { + return false + } + + if (!this.table[event]) { + this.table[event] = {} + } + + return this.table[event]["start"] = performance.now() + } + + end(event) { + if (this.params.disabled) { + return false + } + + if (!this.table[event]) { + return + } + + return this.table[event]["end"] = performance.now() + } + + finally() { + if (this.params.disabled) { + return false + } + + console.group(this.id) + + Object.entries(this.table).forEach(([entry, value]) => { + console.log(entry, `${(value.end - value.start).toFixed(0)}ms`) + }) + + console.groupEnd() + } +} \ No newline at end of file