[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fast string and number output to a stream
In article <poeck-030694163421@wi6a65.informatik.uni-wuerzburg.de> poeck@informatik.uni-wuerzburg.de (Karsten Poeck) writes:
Kaveh) wrote:
> What is the fastest way of writing strings and numbers to a stream? None
> of the ways I have tried seems to be much faster than simply using format.
>
For Strings
(defun save-a-string (string function value stream)
(declare (ignore stream))
(dovector (char string)
(when (char= char #\")
(funcall function value #\\))
(funcall function value char)
)
)
(defun save-a-string-to-an-open-stream (string stream)
(multiple-value-bind
(a b)
(stream-writer stream)
(save-a-string string a b stream)))
;(save-a-string-to-an-open-stream "ddddd" *standard-output*)
I have something like this for fixnums too, but you might as well call
print-object for numbers
Fixnums are pretty easy, but floats are a bit harder. I have some code
that does pretty well for floats.
Another thing to try is FORMATTER. In some Lisp's, like Allegro, it's
really just a call to format, but in MCL it looks like its trying to do the
right thing. I haven't timed it though.
You should also try WRITE.
k
--
Ken Anderson
Internet: kanderson@bbn.com
BBN STC Work Phone: 617-873-3160
10 Moulton St. Home Phone: 617-643-0157
Mail Stop 6/4c FAX: 617-873-3776
Cambridge MA 02138
USA