aboutsummaryrefslogtreecommitdiffstats
path: root/packages/benchmarks/src/utils.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-12-06 16:07:11 +0000
committerGitHub <noreply@github.com>2025-12-06 16:07:11 +0000
commit6180c6622c88ca33d0d387a50be9036429281598 (patch)
tree1df3e4143a489ada2f542896bf2f2ae392a727ca /packages/benchmarks/src/utils.ts
parentde98873a06a25084eb2d3bcabda158f23c081672 (diff)
downloadkarakeep-6180c6622c88ca33d0d387a50be9036429281598.tar.zst
chore: add benchmarks (#2229)
* chore: add benchmarks * upgrade deps * fixes * lint
Diffstat (limited to 'packages/benchmarks/src/utils.ts')
-rw-r--r--packages/benchmarks/src/utils.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/benchmarks/src/utils.ts b/packages/benchmarks/src/utils.ts
new file mode 100644
index 00000000..cfb00723
--- /dev/null
+++ b/packages/benchmarks/src/utils.ts
@@ -0,0 +1,31 @@
+export function sleep(ms: number): Promise<void> {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
+
+export async function waitUntil(
+ fn: () => Promise<boolean>,
+ description: string,
+ timeoutMs = 60000,
+ intervalMs = 1000,
+): Promise<void> {
+ const start = Date.now();
+ while (Date.now() - start < timeoutMs) {
+ try {
+ if (await fn()) {
+ return;
+ }
+ } catch {
+ // Ignore and retry
+ }
+ await sleep(intervalMs);
+ }
+ throw new Error(`${description} timed out after ${timeoutMs}ms`);
+}
+
+export function formatNumber(num: number, fractionDigits = 2): string {
+ return num.toFixed(fractionDigits);
+}
+
+export function formatMs(ms: number): string {
+ return `${formatNumber(ms, ms >= 10 ? 1 : 2)} ms`;
+}