Quite astoning results
Well one can argue about the problem at hand, however here we go I have around 1500 files in a directory whith some informatoi on how many downloads we've encountered. Now I wrote a few script to see how "fast" or "slow" different languages on this task are. I come up with the following alternatives for LispWorks: (without cl-ppcre) (defun run (dir) (let ((sum 0) (count 0) (digits (make-string 10))) (cd dir) (dolist (file (directory "*.*")) (with-open-file (stream file) (loop for line = (read-line stream nil) then (read-line stream nil) while line do #| (multiple-value-bind (mstart mend reg-start reg-end) (cl-ppcre:scan "(\\d+) Windows executable" line) (when mstart (let* ((start-pos (aref reg-start 0)) (end-pos (aref reg-end 0))) |# (let ((find (search "Windows exe" line ))) (when find (let ((j (loop for i = 0 then (1+ i) while (char= (schar line i) #\Space) finally return i)) (to-add 0)) (loop for counter = j then (1+ counter) and i = 0 then (1+ i) while (digit-char-p (schar line counter)) do (setf to-add (+ (* to-add 10) (- (char-int (schar line counter)) #.(char-int #\0))))) (incf sum to-add) ; (parse-integer line :start start-pos :end end-pos)) (incf count))))))) (format t "~d download in ~d days = ~,2,f downloads/day" sum count (/ (float sum) count)))) Here are the timing results for it: (time (run "/home/frido/Mail/Administration/")) Timing the evaluation of (RUN "/home/frido/Mail/Administration/") 61233 download in 168 days = 364.48 downloads/day user time = 9.178 system time = 0.091 Elapsed time = 0:00:10 Allocation = 109359240 bytes standard / 1237797 bytes conses 0 Page faults You see it alloates more then 100 MB !!! Now the same with the cl-ppcre solution: (time (run "/home/frido/Mail/Administration/")) Timing the evaluation of (RUN "/home/frido/Mail/Administration/") 61233 download in 168 days = 364.48 downloads/day user time = 1.946 system time = 0.101 Elapsed time = 0:00:03 Allocation = 198901592 bytes standard / 1236895 bytes conses 0 Page faults NIL It allocates round 98 MB more but neverthless is nearly 5 times faster then the non cl-ppcre solution. I'm quite suprises about this findings. Have you an idea why this may work that way? Regards Friedrich