34 lines
842 B
Scheme
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)))
|