# HG changeset patch # User Steve Losh # Date 1545797833 18000 # Node ID 18f9292a0c6cff2faa7e357938e0a3bb08b6f6b3 # Parent 0b3e65bdbab938fb8600949fc0135a70f21384cc More cleaning diff -r 0b3e65bdbab9 -r 18f9292a0c6c src/main.lisp --- a/src/main.lisp Tue Dec 25 23:13:27 2018 -0500 +++ b/src/main.lisp Tue Dec 25 23:17:13 2018 -0500 @@ -12,12 +12,11 @@ ;;; than having a fresh one per field. It's a little more tedious but it's ;;; *significantly* less consing (e.g. 500mb versus 1.5gb). -(defun read-char-if (char stream &optional (eof-error-p t) eof-value) - "If the next character in `stream` is `char`, read and return it. Otherwise, return `nil`." - (cond - ((eql char (peek-char nil stream eof-error-p nil)) (read-char stream)) - ((eql char eof-value) char) - (t nil))) +(defun read-char-if (char stream) + "If the next character in `stream` is `char`, read and return it. Otherwise return `nil`." + (if (eql char (peek-char nil stream nil nil)) + (read-char stream) + nil)) (defun read-unquoted-field (stream delimiter result) "Read an unquoted field (but not the ending field delimiter) from `stream` into `result`." @@ -35,7 +34,7 @@ (read-char stream) ; chomp initial quote (loop :for char = (read-char stream) :until (and (char= #\" char) - (not (read-char-if #\" stream nil))) + (not (read-char-if #\" stream))) :do (write-char char result))) (defun read-field (stream delimiter result) diff -r 0b3e65bdbab9 -r 18f9292a0c6c test/bench.lisp --- a/test/bench.lisp Tue Dec 25 23:13:27 2018 -0500 +++ b/test/bench.lisp Tue Dec 25 23:17:13 2018 -0500 @@ -2,7 +2,7 @@ (defparameter *field-length* 50) (defparameter *row-length* 50) -(defparameter *data-rows* 10000) +(defparameter *data-rows* 1000) (defparameter *data-repetitions* 10) (defun random-char (string)