皆さん、Common Lisp (SBCL) でストリームを読み取る最速の方法は何ですか?
私にとって、それはread-lineです。しかし、突然、この関数のパフォーマンスの問題に行き詰まりました。1.5 秒で 10kk 文字 (それぞれ 10000 文字の 1000 行) を読み取る必要がありますが、read-line はそれを達成できませんでした。Common Lisp で可能ですか? 高速読み取り用の C スタイルのscanf()関数を提供しますか?
ありがとう!
更新します。コード:
(defun split (string)
(let ((space-position (position #\Space string)))
(list
(subseq string 0 space-position)
(subseq string (+ space-position 1)))))
(defun solve (line)
(let ((nums (split line))
(first)
(second))
(setq first (parse-integer (car nums)))
(setq second (parse-integer (cadr nums)))
(* first second)))
(defun spoj()
(let ((N (read))
(line))
(dotimes (i N)
(setq line (read-line))
(format t "~d~%" (solve line))))))
(spoj)