Chez re-host spike: substrate ceiling vs Janet (fib/mandelbrot)
Hand-translate the two compute benches into the Scheme a jolt->Chez backend would emit, to localize the execution-substrate ceiling without porting the RT. fib 30: 246.6 -> 5.2 ms (~47x, fixnum). mandelbrot 200: 166.3 -> 13.4 ms (~12.4x) ONLY with flonum-specialized ops; generic float ops box every flonum and stay ~1.7x. 13.4 ms matches jolt's JOLT_CGEN C result, so Chez's native compiler reaches the C ceiling with no cc step, REPL intact. Size: Chez base 2.9 MB (AOT) / 4.0 MB (dynamic) vs Janet 2.21. Memory: Chez ~32-49 MB fixed baseline vs Janet ~12 MB (the one regression). RT-bound axes (collections/binary-trees, where Chez's generational GC should help) not yet measured. See spike/chez/RESULTS.md.
This commit is contained in:
parent
3c853429f9
commit
0087763dc9
4 changed files with 216 additions and 0 deletions
25
spike/chez/fib.ss
Normal file
25
spike/chez/fib.ss
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
;; fib spike — translated from bench/fib.clj. Pure call + integer arith.
|
||||
;; chez --script fib.ss [n=30] [optlevel=2]
|
||||
(import (chezscheme))
|
||||
(optimize-level
|
||||
(let ((a (command-line-arguments)))
|
||||
(if (and (pair? a) (pair? (cdr a))) (string->number (cadr a)) 2)))
|
||||
|
||||
(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))))
|
||||
(define (run n) (fib n))
|
||||
|
||||
(define (now-ns)
|
||||
(let ((t (current-time 'time-monotonic)))
|
||||
(+ (* (time-second t) 1000000000) (time-nanosecond t))))
|
||||
|
||||
(let* ((a (command-line-arguments))
|
||||
(n (if (pair? a) (string->number (car a)) 30)))
|
||||
(run (- n 6)) (run (- n 6)) ; warmup
|
||||
(let loop ((k 0) (acc '()))
|
||||
(if (< k 3)
|
||||
(let* ((t0 (now-ns)) (r (run n)) (ms (/ (- (now-ns) t0) 1000000.0)))
|
||||
(loop (+ k 1) (cons ms acc)))
|
||||
(begin
|
||||
(printf "fib n ~a result ~a\n" n (run n))
|
||||
(printf "runs: ~a\n" (reverse acc))
|
||||
(printf "mean: ~a ms\n" (exact->inexact (/ (apply + acc) 3.0)))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue