benchmark tweaks and addition
This commit is contained in:
parent
f22aaec21d
commit
885382e12e
|
@ -463,7 +463,7 @@ exec racket -qu "$0" ${1+"$@"}
|
||||||
run-exe
|
run-exe
|
||||||
extract-bigloo-times
|
extract-bigloo-times
|
||||||
clean-up-bin
|
clean-up-bin
|
||||||
(append '(cpstak nucleic2 takr2)
|
(append '(ctak cpstak nucleic2 takr2)
|
||||||
racket-specific-progs))
|
racket-specific-progs))
|
||||||
(make-impl 'gambit
|
(make-impl 'gambit
|
||||||
void
|
void
|
||||||
|
@ -521,7 +521,9 @@ exec racket -qu "$0" ${1+"$@"}
|
||||||
(define obsolete-impls '(racket3m racketcgc racket-j racketcgc-j racketcgc-tl mzc mz-old))
|
(define obsolete-impls '(racket3m racketcgc racket-j racketcgc-j racketcgc-tl mzc mz-old))
|
||||||
|
|
||||||
(define benchmarks
|
(define benchmarks
|
||||||
'(conform
|
'(collatz
|
||||||
|
collatz-q
|
||||||
|
conform
|
||||||
cpstak
|
cpstak
|
||||||
ctak
|
ctak
|
||||||
deriv
|
deriv
|
||||||
|
|
1
collects/tests/racket/benchmarks/common/collatz-q.rkt
Normal file
1
collects/tests/racket/benchmarks/common/collatz-q.rkt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
(module collatz-q "wrap.rkt")
|
15
collects/tests/racket/benchmarks/common/collatz-q.sch
Normal file
15
collects/tests/racket/benchmarks/common/collatz-q.sch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
(define (cycle-length n)
|
||||||
|
(cond
|
||||||
|
[(= n 1)
|
||||||
|
1]
|
||||||
|
[(odd? n)
|
||||||
|
(+ 1 (cycle-length (+ 1 (* 3 n))))]
|
||||||
|
[(even? n)
|
||||||
|
(+ 1 (cycle-length (quotient n 2)))]))
|
||||||
|
|
||||||
|
(time (let loop ([i 1] [v #f])
|
||||||
|
(if (= i 1000000)
|
||||||
|
v
|
||||||
|
(loop (+ i 1) (cycle-length i)))))
|
||||||
|
|
1
collects/tests/racket/benchmarks/common/collatz.rkt
Normal file
1
collects/tests/racket/benchmarks/common/collatz.rkt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
(module collatz "wrap.rkt")
|
18
collects/tests/racket/benchmarks/common/collatz.sch
Normal file
18
collects/tests/racket/benchmarks/common/collatz.sch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
;; This variant of the benchmark uses `/'.
|
||||||
|
;; See "collatz-q.sch" for the `quotient' variant.
|
||||||
|
|
||||||
|
(define (cycle-length n)
|
||||||
|
(cond
|
||||||
|
[(= n 1)
|
||||||
|
1]
|
||||||
|
[(odd? n)
|
||||||
|
(+ 1 (cycle-length (+ 1 (* 3 n))))]
|
||||||
|
[(even? n)
|
||||||
|
(+ 1 (cycle-length (/ n 2)))]))
|
||||||
|
|
||||||
|
(time (let loop ([i 1] [v #f])
|
||||||
|
(if (= i 1000000)
|
||||||
|
v
|
||||||
|
(loop (+ i 1) (cycle-length i)))))
|
||||||
|
|
|
@ -664,4 +664,4 @@
|
||||||
(let ((x (p (vector->list (make-vector k 'a)))))
|
(let ((x (p (vector->list (make-vector k 'a)))))
|
||||||
(length (parse->trees x 's 0 k)))))
|
(length (parse->trees x 's 0 k)))))
|
||||||
|
|
||||||
(time (test 12))
|
(time (test 14))
|
||||||
|
|
|
@ -671,7 +671,7 @@
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
(let ((input (with-input-from-file "input.txt" read)))
|
(let ((input (with-input-from-file "input.txt" read)))
|
||||||
(time (let loop ((n 1000) (v 0))
|
(time (let loop ((n 10000) (v 0))
|
||||||
(if (zero? n)
|
(if (zero? n)
|
||||||
v
|
v
|
||||||
(begin
|
(begin
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
(newline))
|
(newline))
|
||||||
#:exists 'truncate/replace)
|
#:exists 'truncate/replace)
|
||||||
|
|
||||||
(when (system (format "bigloo -static-bigloo -w -o ~a -copt -m32 -call/cc -copt -O3 -copt -fomit-frame-pointer -O6 ~a.scm"
|
(when (system (format "bigloo -static-bigloo -w -o ~a -call/cc -copt -O3 -copt -fomit-frame-pointer -O6 ~a.scm"
|
||||||
name name))
|
name name))
|
||||||
(delete-file (format "~a.scm" name))
|
(delete-file (format "~a.scm" name))
|
||||||
(delete-file (format "~a.o" name)))
|
(delete-file (format "~a.o" name)))
|
||||||
|
|
|
@ -361,6 +361,13 @@
|
||||||
(set! *env* (cons *env* (cons x (cons y (cons z def)))))
|
(set! *env* (cons *env* (cons x (cons y (cons z def)))))
|
||||||
(a)))))
|
(a)))))
|
||||||
|
|
||||||
|
;- -- evaluator ---
|
||||||
|
|
||||||
|
(define (evaluate expr)
|
||||||
|
((compile (list 'lambda '() expr))))
|
||||||
|
|
||||||
|
(define *env* '(dummy)) ; current environment
|
||||||
|
|
||||||
;- -- global variable definition ---
|
;- -- global variable definition ---
|
||||||
|
|
||||||
(define (define-global var val)
|
(define (define-global var val)
|
||||||
|
@ -380,13 +387,6 @@
|
||||||
|
|
||||||
;- -- to evaluate an expression we compile it and then call the result ---
|
;- -- to evaluate an expression we compile it and then call the result ---
|
||||||
|
|
||||||
(define (evaluate expr)
|
|
||||||
((compile (list 'lambda '() expr))))
|
|
||||||
|
|
||||||
(define *env* '(dummy)) ; current environment
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(evaluate '(define 'fib
|
(evaluate '(define 'fib
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(if (< x 2)
|
(if (< x 2)
|
||||||
|
|
|
@ -109,6 +109,11 @@
|
||||||
(lambda (x y . z)
|
(lambda (x y . z)
|
||||||
(int a (cons (cons b x) (cons (cons c y) (cons (cons d z) env))))))
|
(int a (cons (cons b x) (cons (cons c y) (cons (cons d z) env))))))
|
||||||
|
|
||||||
|
;- -- evaluator ---
|
||||||
|
|
||||||
|
(define (evaluate expr)
|
||||||
|
(interpret expr))
|
||||||
|
|
||||||
;- -- global variable definition ---
|
;- -- global variable definition ---
|
||||||
|
|
||||||
(define (define-global var val)
|
(define (define-global var val)
|
||||||
|
@ -130,10 +135,6 @@
|
||||||
|
|
||||||
;- -- to evaluate an expression we call the interpreter ---
|
;- -- to evaluate an expression we call the interpreter ---
|
||||||
|
|
||||||
(define (evaluate expr)
|
|
||||||
(interpret expr))
|
|
||||||
|
|
||||||
|
|
||||||
(evaluate '(define 'fib
|
(evaluate '(define 'fib
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(if (< x 2)
|
(if (< x 2)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user