diff --git a/examples/closure_cracking.myc b/examples/closure_cracking.myc index 8edf76c..c0e20cf 100644 --- a/examples/closure_cracking.myc +++ b/examples/closure_cracking.myc @@ -1,2 +1,4 @@ +;; Benchmark: 148ns +;; Benchmark-Repeat: 13466 ;; Output: 5 (((fn [x] (fn [] x)) 5)) diff --git a/examples/closure_cracking_named.myc b/examples/closure_cracking_named.myc index 4e95860..9635443 100644 --- a/examples/closure_cracking_named.myc +++ b/examples/closure_cracking_named.myc @@ -1,3 +1,5 @@ +;; Benchmark: 623ns +;; Benchmark-Repeat: 3201 ;; Output: 5 (do (def f (fn [x] (fn [] x))) diff --git a/examples/currying.myc b/examples/currying.myc index 1265bab..10f5f02 100644 --- a/examples/currying.myc +++ b/examples/currying.myc @@ -1,3 +1,5 @@ +;; Benchmark: 1.1us +;; Benchmark-Repeat: 1814 ;; Output: 42 (do (def f (fn [a] (fn [b] (fn [c] (+ a (+ b c)))))) diff --git a/examples/def_local_inlining.myc b/examples/def_local_inlining.myc index 1779f17..9835171 100644 --- a/examples/def_local_inlining.myc +++ b/examples/def_local_inlining.myc @@ -1,3 +1,5 @@ +;; Benchmark: 374ns +;; Benchmark-Repeat: 5419 ;; examples/def_local_inlining.myc ;; Demonstrates potential for DefLocal-Inlining (Phase 2.5) diff --git a/examples/extreme_capture.myc b/examples/extreme_capture.myc index f653655..bc8d01b 100644 --- a/examples/extreme_capture.myc +++ b/examples/extreme_capture.myc @@ -1,5 +1,5 @@ -;; Benchmark: 1.7us -;; Benchmark-Repeat: 1198 +;; Benchmark: 1.3us +;; Benchmark-Repeat: 1494 ;; Output: 36 (do ;; Excessive capture test diff --git a/examples/folding.myc b/examples/folding.myc index 7ca0f76..4bd8cdb 100644 --- a/examples/folding.myc +++ b/examples/folding.myc @@ -1,2 +1,4 @@ +;; Benchmark: 150ns +;; Benchmark-Repeat: 13074 ;; Output: 30 (+ 10 20) diff --git a/examples/macro_financial.myc b/examples/macro_financial.myc index 768b8d7..66b5649 100644 --- a/examples/macro_financial.myc +++ b/examples/macro_financial.myc @@ -1,5 +1,5 @@ -;; Benchmark: 462ns -;; Benchmark-Repeat: 4348 +;; Benchmark: 384ns +;; Benchmark-Repeat: 5255 ;; Financial DSL Macro example ;; Demonstrates generating complex records from simple parameters. ;; Output: {:price 100, :size 2, :total 200} diff --git a/examples/macro_power.myc b/examples/macro_power.myc index 18479dd..b20b3c8 100644 --- a/examples/macro_power.myc +++ b/examples/macro_power.myc @@ -1,5 +1,5 @@ -;; Benchmark: 376ns -;; Benchmark-Repeat: 5359 +;; Benchmark: 223ns +;; Benchmark-Repeat: 8929 ;; Nested Macro and Arithmetic example ;; Output: 81 diff --git a/examples/optimizer_purity.myc b/examples/optimizer_purity.myc index 288882e..d14057c 100644 --- a/examples/optimizer_purity.myc +++ b/examples/optimizer_purity.myc @@ -1,3 +1,5 @@ +;; Benchmark: 501ns +;; Benchmark-Repeat: 4038 (do (def PI 3.1415) (def area (fn [x] (* PI x))) diff --git a/examples/optimizer_repro.myc b/examples/optimizer_repro.myc new file mode 100644 index 0000000..1c91168 --- /dev/null +++ b/examples/optimizer_repro.myc @@ -0,0 +1,21 @@ +;; Benchmark: 666ns +;; Benchmark-Repeat: 2975 +(do + ;; 1. Provokation Stack-Gap (bei Optimization Level 2) + (def result + (fn [] + (do + (def unused 10) ;; Wird entfernt, Slot 0 ist dann "leer" + (def used 42) ;; Bleibt auf Slot 1 -> Lücke! + used))) + + ;; 2. Provokation Inlining-Blockade + ;; Diese Funktion wird nicht inlined, weil sie ein 'def' enthält + (def complex-add + (fn [a] + (do + (def b 100) + (+ a b)))) + + [(result) (complex-add 50)] +) \ No newline at end of file