On Tue, 13 Feb 2007 21:08:33 -0800, Brent Fulgham bfulg@pacbell.net wrote:
The implementations are all written by volunteers who submit them. If you see any low hanging fruit, let me know and I'll be glad to update the tests.
For example here's a more compact (and most likely faster) way to read a whole file at once (untested):
(defun get-input-chars (stream) (let ((result (make-string (file-length stream)))) (read-sequence result stream) result))
See also http://www.emmett.ca/~sabetts/slurp.html.
It probably won't change the outcome of the benchmark, but the original function looks pretty weird.
Also, if you're really obsessed with speed, CL-PPCRE:ALL-MATCHES certainly isn't the best way to count all matches because it conses up a list you don't need. You should use DO-SCANS and count yourself.
Finally, I think that ">[^\n]*\n|\n" should be replaced by "(?m)\n|^>.*" - maybe not for speed, but for clarity and correctness.
But of course, the tests are all for entertainment purposes only ;-)
Yes... :)