(use srfi-1) (load "./time") (sys-srandom (sys-time)) (define dbname "_db.scm") (define (random-string len) (let* ((chars "abcdefghijklmnopqrstuvwxyz") (chars-len (string-length chars))) (with-output-to-string (lambda () (dotimes (i len) (write (string-ref chars (modulo (sys-random) chars-len)))))))) (define (random-list len) (let ((str "abcdefgh") (result ())) (dotimes (i len) (set! result (append (list str) result))) result)) (define (write-db name n-lists list-len as-one-list) (with-output-to-file name (lambda () (when as-one-list (print "(")) (dotimes (i n-lists) (print (random-list list-len))) (when as-one-list (print ")"))))) (define (read-db-multi-list name) (time (let ((result ()) (line #f)) (with-input-from-file name (lambda () (set! line (read)) (until (eof-object? line) (set! result (append line result)) (set! line (read))))) result))) (define (read-db-single-list name) (time (with-input-from-file name (lambda () (read))))) (define (test1) (let ((n 10000) (l 4)) (write-db dbname n l #f) (read-db-multi-list dbname) (write-db dbname n l #t) (read-db-single-list dbname))) (test1) ;; (define (send-file filename output-port) ;; (let ((counter (make ))) ;; (with-time-counter ;; counter ;; (call-with-input-file filename ;; (lambda (port) ;; ;; todo look at the :unit and :size keywords to copy-port ;; (copy-port port output-port)))) ;; (*statistics* 'time-used (time-counter-value counter)) ;; (*statistics* 'bytes-sent (file-size filename))))