Add typed version of collatz benchmark
This commit is contained in:
parent
c5330194a9
commit
7c5db431a0
|
@ -1164,6 +1164,8 @@ path/s is either such a string or a list of them.
|
|||
"collects/tests/racket/benchmarks/common/typed" responsible (stamourv samth)
|
||||
"collects/tests/racket/benchmarks/common/typed/cpstak.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/ctak.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/collatz.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/collatz-q.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/dderiv.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/deriv.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/benchmarks/common/typed/div.rktl" drdr:command-line #f
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
#lang s-exp "wrapper.rkt"
|
|
@ -0,0 +1 @@
|
|||
#lang s-exp "wrapper.rkt"
|
|
@ -0,0 +1 @@
|
|||
#lang s-exp "wrapper.rkt"
|
|
@ -0,0 +1 @@
|
|||
#lang s-exp "wrapper.rkt"
|
18
collects/tests/racket/benchmarks/common/typed/collatz-q.rktl
Normal file
18
collects/tests/racket/benchmarks/common/typed/collatz-q.rktl
Normal file
|
@ -0,0 +1,18 @@
|
|||
|
||||
(: cycle-length : Integer -> Integer)
|
||||
(define (cycle-length n)
|
||||
(cond
|
||||
[(= n 1)
|
||||
1]
|
||||
[(odd? n)
|
||||
(+ 1 (cycle-length (+ 1 (* 3 n))))]
|
||||
[(even? n)
|
||||
(+ 1 (cycle-length (quotient n 2)))]
|
||||
[else (error "unreachable")]))
|
||||
|
||||
(time (let: loop : (U False Integer)
|
||||
([i : Integer 1] [v : (U False Integer) #f])
|
||||
(if (= i 1000000)
|
||||
v
|
||||
(loop (+ i 1) (cycle-length i)))))
|
||||
|
21
collects/tests/racket/benchmarks/common/typed/collatz.rktl
Normal file
21
collects/tests/racket/benchmarks/common/typed/collatz.rktl
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
;; This variant of the benchmark uses `/'.
|
||||
;; See "collatz-q.sch" for the `quotient' variant.
|
||||
|
||||
(: cycle-length : Integer -> Integer)
|
||||
(define (cycle-length n)
|
||||
(cond
|
||||
[(= n 1)
|
||||
1]
|
||||
[(odd? n)
|
||||
(+ 1 (cycle-length (+ 1 (* 3 n))))]
|
||||
[(even? n)
|
||||
(+ 1 (cycle-length (/ n 2)))]
|
||||
[else (error "unreachable")]))
|
||||
|
||||
(time (let: loop : (U False Integer)
|
||||
([i : Integer 1] [v : (U False Integer) #f])
|
||||
(if (= i 1000000)
|
||||
v
|
||||
(loop (+ i 1) (cycle-length i)))))
|
||||
|
Loading…
Reference in New Issue
Block a user