import { assert } from "jsr:@std/assert"; import { describe, it } from "jsr:@std/testing/bdd"; /** * Tests if a function can run a given number of iterations within a target frame time. * @param fn The function to test. * @param iterations Number of times to run the function per frame. * @param fps Target frames per second. */ export function testPerformance( fn: () => unknown, iterations: number, fps: number, ) { console.log(`Performance Test - ${iterations} iterations at ${fps} FPS`); const frameTime = 1000 / fps; const startTime = performance.now(); for (let i = 0; i < iterations; i++) { fn(); } const endTime = performance.now(); const elapsed = endTime - startTime; console.log( `Elapsed time: ${elapsed.toFixed(2)}ms (Target: ≤${ frameTime.toFixed(2) }ms)`, ); assert( elapsed <= frameTime, `Function took too long: ${elapsed.toFixed(2)}ms (Target: ≤${ frameTime.toFixed(2) }ms)`, ); // }); }