Logo
Explore Help
Sign In
miloignis/kraken
1
0
Fork 0
You've already forked kraken
Code Issues Pull Requests Packages Projects Releases Wiki Activity
Files
54f1092a2a854d19fd64f7cbfd82af470b6aaa15
kraken/koka_bench/newlisp/newlisp-builtin-rbtree.nl
Nathan Braswell e95feb9309 tiny perceus fix, but mostly wrote match+rb-tree f-expr/macro for newLisp and benchmarked it. kraken 5-15x faster than newlisp-rbtree-macro, 137x faster than newlisp-rbtree-fexpr. I was suprised at first that the macro and fexpr versions were so close at 8.7x (while interpreted kraken rbtree is 50,000x slower), but after thinking about it it makes sense - the Kraken version has slowdown exponential in the multiple levels of f-exprs ('match' is an fexpr, but then so is 'let' and 'and' and 'lambda'), whereas the newLisp f-expr runtime expands to fast builtins ('let', 'and', etc). And all that exponential f-expr slowdown gets compiled away in Kraken!
2022-07-06 02:34:48 -04:00

13 lines
351 B
Plaintext
Executable File
Raw Blame History

#!/usr/bin/env newlisp
(new Tree 'Foo)
(define (make-test-tree n t) (cond ((<= n 0) t)
(true (make-test-tree (- n 1) (begin (t n (= 0 (% n 10))) t)))))
(define (reduce-test-tree t) (let ((sum 0)) (dolist (item (t)) (if (item 1) (setq sum (+ sum 1))))))
(println (reduce-test-tree (make-test-tree (integer (main-args 2)) Foo)))
(exit)
Reference in New Issue View Git Blame Copy Permalink
Powered by Gitea Version: 1.24.6 Page: 35ms Template: 3ms
English
Bahasa Indonesia Deutsch English Español Français Gaeilge Italiano Latviešu Magyar nyelv Nederlands Polski Português de Portugal Português do Brasil Suomi Svenska Türkçe Čeština Ελληνικά Български Русский Українська فارسی മലയാളം 日本語 简体中文 繁體中文(台灣) 繁體中文(香港) 한국어
Licenses API