ikarus/benchmarks/r6rs-benchmarks/string.ss

34 lines
842 B
Scheme

;;; STRING -- One of the Kernighan and Van Wyk benchmarks.
(library (r6rs-benchmarks string)
(export main)
(import (r6rs) (r6rs-benchmarks))
(define s "abcdef")
(define (grow)
(set! s (string-append "123" s "456" s "789"))
(set! s (string-append
(substring s (quotient (string-length s) 2) (string-length s))
(substring s 0 (+ 1 (quotient (string-length s) 2)))))
s)
(define (trial n)
(do ((i 0 (+ i 1)))
((> (string-length s) n) (string-length s))
(grow)))
(define (my-try n)
(do ((i 0 (+ i 1)))
((>= i 10) (string-length s))
(set! s "abcdef")
(trial n)))
(define (main . args)
(run-benchmark
"string"
string-iters
(lambda (result) (equal? result 524278))
(lambda (n) (lambda () (my-try n)))
500000)))