Here's the result: What do you know fool chicken crosses road f elapsed: 1.260000 seconds f2 elapsed 2.110000 seconds
[EMAIL PROTECTED] wrote: > Pebblestone: > > (defun test4 () > > (let ((a (make-array 4000000 :element-type 'string > > :adjustable nil)) > > (b nil)) > > (dotimes (i 1000000) > > (progn > > (let ((j (1- (* 4 i)))) > > (setf (aref a (incf j)) "What do you know") > > (setf (aref a (incf j)) "so long ...") > > (setf (aref a (incf j)) "chicken crosses road") > > (setf (aref a (incf j)) "fool")))) > > (setf b (remove-duplicates a)) > > (map 'vector #'print b))) > > > That test4 function can be compared to this one, with explicit > preallocation (and xrange instead of range!): > > def f2(): > n = 1000000 > a = [None] * n * 4 > for i in xrange(0, n*4, 4): > a[i] = 'What do you know' > a[i+1] = 'so long...' > a[i+2] = 'chicken crosses road' > a[i+3] = 'fool' > for s in set(a): > print s > > But note this a list (that is an array, a list is a different data > structure) of python becomes filled with pointers. I don't know what > your CL does exactly. > > I can also suggest you to use Psyco too here > (http://psyco.sourceforge.net/): > > import psyco > psyco.bind(f2) > > It makes that f2 more than twice faster here. > > Bye, > bearophile -- http://mail.python.org/mailman/listinfo/python-list