/mobile Handheld Friendly website
x64 Ubuntu : Intel® Q6600® quad-core |
Each table row shows performance measurements for this Racket program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 12 | 0.23 | 0.23 | 608 | 640 | 0% 8% 95% 9% |
| 16 | 1.34 | 1.34 | 55,004 | 640 | 0% 100% 0% 1% |
| 20 | 40.88 | 40.94 | 400,344 | 640 | 13% 87% 0% 0% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read binary-trees benchmark to see what this program should do.
Welcome to Racket v5.3.4.
#lang racket/base ;;; The Computer Language Benchmarks Game ;;; http://benchmarksgame.alioth.debian.org/ ;;; Derived from the Chicken variant by Sven Hartrumpf ;;; contributed by Eli Barzilay (require racket/cmdline racket/require (for-syntax racket/base) (filtered-in (lambda (name) (regexp-replace #rx"unsafe-" name "")) racket/unsafe/ops)) (struct *leaf (val)) (struct *node *leaf (left right)) (define-syntax leaf (make-rename-transformer #'*leaf)) (define-syntax leaf? (make-rename-transformer #'*leaf?)) (define-syntax node (make-rename-transformer #'*node)) (define-syntax node? (make-rename-transformer #'*node?)) (define-syntax-rule (leaf-val l) (struct-ref l 0)) (define-syntax-rule (node-left n) (struct-ref n 1)) (define-syntax-rule (node-right n) (struct-ref n 2)) (define (make item d) (if (fx= d 0) (leaf item) (let ([item2 (fx* item 2)] [d2 (fx- d 1)]) (node item (make (fx- item2 1) d2) (make item2 d2))))) (define (check t) (let loop ([t t] [acc 0]) (let ([acc (fx+ (leaf-val t) acc)]) (if (node? t) (loop (node-left t) (fx- acc (loop (node-right t) 0))) acc)))) (define min-depth 4) (define (main n) (let ([max-depth (max (+ min-depth 2) n)]) (let ([stretch-depth (+ max-depth 1)]) (printf "stretch tree of depth ~a\t check: ~a\n" stretch-depth (check (make 0 stretch-depth)))) (let ([long-lived-tree (make 0 max-depth)]) (for ([d (in-range 4 (+ max-depth 1) 2)]) (let ([iterations (expt 2 (+ (- max-depth d) min-depth))]) (printf "~a\t trees of depth ~a\t check: ~a\n" (* 2 iterations) d (for/fold ([c 0]) ([i (in-range iterations)]) (fx+ c (fx+ (check (make i d)) (check (make (fx- 0 i) d)))))))) (printf "long lived tree of depth ~a\t check: ~a\n" max-depth (check long-lived-tree))))) (command-line #:args (n) (main (string->number n)))
Sat, 11 May 2013 15:57:53 GMT COMMAND LINE: /usr/local/src/racket-5.3.4/bin/racket binarytrees.racket-2.racket 20 PROGRAM OUTPUT: stretch tree of depth 21 check: -1 2097152 trees of depth 4 check: -2097152 524288 trees of depth 6 check: -524288 131072 trees of depth 8 check: -131072 32768 trees of depth 10 check: -32768 8192 trees of depth 12 check: -8192 2048 trees of depth 14 check: -2048 512 trees of depth 16 check: -512 128 trees of depth 18 check: -128 32 trees of depth 20 check: -32 long lived tree of depth 20 check: -1