From 20e61746583f33d12c8e5b65ad763e4715d382df Mon Sep 17 00:00:00 2001 From: Emma Date: Mon, 17 Feb 2025 17:48:04 -0700 Subject: [PATCH] math bench --- deno.lock | 20 ++++++++++++++++++++ src/test/angleMathBench.test.ts | 32 ++++++++++++++++++++++++++++++++ src/train/train.ts | 2 +- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/test/angleMathBench.test.ts diff --git a/deno.lock b/deno.lock index 847748c..9a7fad9 100644 --- a/deno.lock +++ b/deno.lock @@ -2,6 +2,10 @@ "version": "4", "specifiers": { "jsr:@bearmetal/doodler@0.0.5-c": "0.0.5-c", + "jsr:@std/assert@*": "1.0.10", + "jsr:@std/assert@^1.0.10": "1.0.10", + "jsr:@std/internal@^1.0.5": "1.0.5", + "jsr:@std/testing@*": "1.0.8", "npm:@deno/vite-plugin@^1.0.4": "1.0.4_vite@6.1.0", "npm:@types/node@*": "22.5.4", "npm:vite@*": "6.1.0", @@ -11,6 +15,22 @@ "jsr": { "@bearmetal/doodler@0.0.5-c": { "integrity": "34b0db85af1393b1b01622915963a8b33ee923c14b381afe9c771efd3d631cf1" + }, + "@std/assert@1.0.10": { + "integrity": "59b5cbac5bd55459a19045d95cc7c2ff787b4f8527c0dd195078ff6f9481fbb3", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" + }, + "@std/testing@1.0.8": { + "integrity": "ceef535808fb7568e91b0f8263599bd29b1c5603ffb0377227f00a8ca9fe42a2", + "dependencies": [ + "jsr:@std/assert@^1.0.10", + "jsr:@std/internal" + ] } }, "npm": { diff --git a/src/test/angleMathBench.test.ts b/src/test/angleMathBench.test.ts new file mode 100644 index 0000000..1ccb584 --- /dev/null +++ b/src/test/angleMathBench.test.ts @@ -0,0 +1,32 @@ +/// +/// +/// +/// +/// +/// + +import { averageAngles, lerpAngle } from "../math/lerp.ts"; +import { testPerformance } from "./bench.ts"; + +Deno.test("angle math", () => { + console.log("Average angles"); + testPerformance( + () => { + const a = Math.random() * Math.PI * 2; + const b = Math.random() * Math.PI * 2; + const avg = averageAngles(a, b); + }, + 10000, + 60, + ); + console.log("Lerp angles"); + testPerformance( + () => { + const a = Math.random() * Math.PI * 2; + const b = Math.random() * Math.PI * 2; + const avg = lerpAngle(a, b, .5); + }, + 10000, + 60, + ); +}); diff --git a/src/train/train.ts b/src/train/train.ts index d32fa56..57db737 100644 --- a/src/train/train.ts +++ b/src/train/train.ts @@ -310,7 +310,7 @@ export class TrainCar extends Debuggable { for (const p of ps) { doodler.dot(p.pos, { color: "green" }); doodler.fillText( - p.angle.toFixed(1).toString(), + p.angle.toFixed(2).toString(), p.pos.copy().add(0, 20), 100, {