(use-modules (srfi srfi-4)) (define %port 7778) (define %size 5000000) (define (time thunk) (let ((start (get-internal-run-time))) (thunk) (let ((end (get-internal-run-time))) (format #t "time: ~a~%" (- end start))))) (if (= 0 (primitive-fork)) (let ((s (socket PF_INET SOCK_STREAM 0))) (bind s AF_INET INADDR_LOOPBACK %port) (listen s 1024) (format #t "accepting connections...~%") (let* ((accepted (accept s)) (port (car accepted)) (vec (make-u8vector %size))) (time (lambda () (uniform-vector-read! vec port))) (close-port port))) (let ((s (socket PF_INET SOCK_STREAM 0)) (vec (make-u8vector %size))) (format #t "client~%") (sleep 1) (connect s AF_INET INADDR_LOOPBACK %port) (format #t "writing...~%") (uniform-vector-write vec s) (format #t "done.~%") (close-port s)))