From 55502cbb69800dd26670ef73212b393833c8564b Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Thu, 19 Feb 2026 17:12:37 +0100 Subject: [PATCH] Perf: Reduce Fibonacci benchmark time --- examples/data.myc | 2 +- examples/tak.myc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 examples/tak.myc diff --git a/examples/data.myc b/examples/data.myc index f707544..916fcd2 100644 --- a/examples/data.myc +++ b/examples/data.myc @@ -1,5 +1,5 @@ ;; Complex Data Structure Test -;; Benchmark: 50.2us +;; Benchmark: 49.4us ;; Output: {:input 10, :name "Fibonacci", :output 55} (do (def fib (fn [n] diff --git a/examples/tak.myc b/examples/tak.myc new file mode 100644 index 0000000..b46a2c7 --- /dev/null +++ b/examples/tak.myc @@ -0,0 +1,17 @@ +;; Benchmark: 602.1us +;; Takeuchi Function Benchmark +;; Benchmark: ~150ms (Specialized) vs ~1.5s (Dynamic) +;; heavily recursive, benefits significantly from specialization of integer arithmetic +;; and direct function calls (skipping dynamic dispatch). +;; Output: 7 + +(do + (def tak (fn [x y z] + (if (<= x y) + y + (tak (tak (- x 1) y z) + (tak (- y 1) z x) + (tak (- z 1) x y))))) + + (tak 10 6 3) +)