summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js
diff options
context:
space:
mode:
authorShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
committerShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
commit7a52ddeba2a68388b544f529d2d92104420f77b0 (patch)
tree15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js')
-rw-r--r--node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js b/node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js
new file mode 100644
index 0000000..d7a8f61
--- /dev/null
+++ b/node_modules/@11ty/eleventy/src/Benchmark/BenchmarkManager.js
@@ -0,0 +1,73 @@
+import { performance } from "node:perf_hooks";
+
+import BenchmarkGroup from "./BenchmarkGroup.js";
+
+// TODO this should not be a singleton, it belongs in the config or somewhere on the Eleventy instance.
+
+class BenchmarkManager {
+ constructor() {
+ this.benchmarkGroups = {};
+ this.isVerbose = true;
+ this.start = this.getNewTimestamp();
+ }
+
+ reset() {
+ this.start = this.getNewTimestamp();
+
+ for (var j in this.benchmarkGroups) {
+ this.benchmarkGroups[j].reset();
+ }
+ }
+
+ getNewTimestamp() {
+ if (performance) {
+ return performance.now();
+ }
+ return new Date().getTime();
+ }
+
+ setVerboseOutput(isVerbose) {
+ this.isVerbose = !!isVerbose;
+ }
+
+ hasBenchmarkGroup(name) {
+ return name in this.benchmarkGroups;
+ }
+
+ getBenchmarkGroup(name) {
+ if (!this.benchmarkGroups[name]) {
+ this.benchmarkGroups[name] = new BenchmarkGroup();
+
+ // Special behavior for aggregate benchmarks
+ // so they don’t console.log every time
+ if (name === "Aggregate") {
+ this.benchmarkGroups[name].setIsVerbose(false);
+ } else {
+ this.benchmarkGroups[name].setIsVerbose(this.isVerbose);
+ }
+ }
+
+ return this.benchmarkGroups[name];
+ }
+
+ getAll() {
+ return this.benchmarkGroups;
+ }
+
+ get(name) {
+ if (name) {
+ return this.getBenchmarkGroup(name);
+ }
+
+ return this.getAll();
+ }
+
+ finish() {
+ let totalTimeSpentBenchmarking = this.getNewTimestamp() - this.start;
+ for (var j in this.benchmarkGroups) {
+ this.benchmarkGroups[j].finish(j, totalTimeSpentBenchmarking);
+ }
+ }
+}
+
+export default BenchmarkManager;