From 7d628b92dab5555d67f5441fe6442b853d64aeff Mon Sep 17 00:00:00 2001 From: "Pierre R. Mai" Date: Wed, 7 Feb 2001 13:23:04 +0000 Subject: [PATCH] Optimized read-http-line a bit in order to reduce gratuitous consing. --- src/main/http-io.cl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/http-io.cl b/src/main/http-io.cl index 92e2220..64886fd 100644 --- a/src/main/http-io.cl +++ b/src/main/http-io.cl @@ -13,6 +13,30 @@ ;;;; ;;;; +(defun read-http-line (stream) + (declare (optimize (speed 3) (safety 0) (debug 0)) + (type stream stream)) + (let ((string (make-array 80 :element-type 'character :fill-pointer 0 + :adjustable t))) + (declare (type string string)) + (do ((char (read-char stream) (read-char stream))) + ((char= char #\Newline) (coerce string 'simple-string)) + (declare (type character char)) + (unless (char= char #\Return) + (vector-push-extend char string))))) + +#+NIL +(defun read-http-line (stream) + (declare (optimize (speed 3) (safety 0) (debug 0)) + (type stream stream)) + (with-output-to-string (out) + (do ((char (read-char stream) (read-char stream))) + ((char= char #\Newline)) + (declare (character char)) + (unless (char= char #\Return) + (write-char char out))))) + +#+NIL (defun read-http-line (stream) (let ((in-line (read-line stream nil nil))) (if in-line