summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy/src/Benchmark/Benchmark.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/Benchmark.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@11ty/eleventy/src/Benchmark/Benchmark.js')
-rw-r--r--node_modules/@11ty/eleventy/src/Benchmark/Benchmark.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy/src/Benchmark/Benchmark.js b/node_modules/@11ty/eleventy/src/Benchmark/Benchmark.js
new file mode 100644
index 0000000..df6dea7
--- /dev/null
+++ b/node_modules/@11ty/eleventy/src/Benchmark/Benchmark.js
@@ -0,0 +1,55 @@
+import { performance } from "node:perf_hooks";
+
+class Benchmark {
+ constructor() {
+ // TypeScript slop
+ this.timeSpent = 0;
+ this.timesCalled = 0;
+ this.beforeTimers = [];
+ }
+
+ reset() {
+ this.timeSpent = 0;
+ this.timesCalled = 0;
+ this.beforeTimers = [];
+ }
+
+ getNewTimestamp() {
+ if (performance) {
+ return performance.now();
+ }
+ return new Date().getTime();
+ }
+
+ incrementCount() {
+ this.timesCalled++;
+ }
+
+ // TODO(slightlyoff):
+ // disable all of these hrtime requests when not benchmarking
+ before() {
+ this.timesCalled++;
+ this.beforeTimers.push(this.getNewTimestamp());
+ }
+
+ after() {
+ if (!this.beforeTimers.length) {
+ throw new Error("You called Benchmark after() without a before().");
+ }
+
+ let before = this.beforeTimers.pop();
+ if (!this.beforeTimers.length) {
+ this.timeSpent += this.getNewTimestamp() - before;
+ }
+ }
+
+ getTimesCalled() {
+ return this.timesCalled;
+ }
+
+ getTotal() {
+ return this.timeSpent;
+ }
+}
+
+export default Benchmark;