;;; STRING -- One of the Kernighan and Van Wyk benchmarks. (library (rnrs-benchmarks string) (export main) (import (rnrs) (rnrs r5rs) (rnrs-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)))