>>107004013
Maybe you've already done this but if you've identified read-line as the issue then it's defined here
https://github.com/sbcl/sbcl/blob/master/src/code/stream.lisp#L387
it dispatches to either s-%read-line or ansi-stream-read-line, at least under ansi-stream-read-line there are two comments for each path ansi-* can take:
;; Stream has a fast-read-char buffer. Copy large chunks directly
;; out of the buffer.
;; Slow path, character by character.
;; There is no need to use PREPARE-FOR-FAST-READ-CHAR
;; because the CIN-BUFFER is known to be NIL.
so read-line may be faster given a fast-read-char buffer (whatever that is), there's also likely some faster io functions that basically wrap fgets if we can find them