(use srfi-13) (define-syntax repeat (syntax-rules () ((_ n forms ...) (let loop ((i n)) (unless (zero? i) forms ... (loop (- i 1))))))) (define big-string "ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssfoossssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss") (print "string-ci=? (from data-structures unit)") (time (repeat 300000 (string-ci=? big-string big-string))) (print "\nstring-ci= (from SRFI-13)") (time (repeat 300000 (string-ci= big-string big-string))) ;;; On my system: ;; $ csi -s string-compare-ci.scm ;; string-ci=? (from data-structures unit) ;; 2.964s CPU time, 0.004s GC time (major), 16 mutations, 12/2738 GCs (major/minor) ;; ;; string-ci= (from SRFI-13) ;; 0.332s CPU time, 0.04s GC time (major), 16 mutations, 51/10623 GCs (major/minor)