[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: how to erase memory fast?
- To: ralex@cs.colorado.edu (Alex Repenning), info-macl@cambridge.apple.com
- Subject: Re: how to erase memory fast?
- From: bill@cambridge.apple.com (Bill St. Clair)
- Date: Thu, 7 Apr 1994 14:14:04 -0400
At 3:33 PM 4/4/94 -0600, Alex Repenning wrote:
>Is there a way in MLC to clear a block of memory very fast? The function
>below erases an icon (32 x 32 x 4) in 1ms on a FX. That's quite slow. Is
>there no other, faster, way to erase a block of memory? .. or maybe some
>idea of how to make the function below a bit faster?
>
>(defun ERASE-ICON (Icon)
> (declare (optimize (speed 3) (safety 0)))
> (let ((Pixmap (rref Icon :Cicon.iconPMap.baseAddr)))
> (dotimes (I (* (logand #x7FFF (rref Icon cicon.iconPMap.rowbytes))
> (rref Icon :cicon.iconPMap.bounds.bottom)))
> (declare (fixnum I))
> (%put-byte Pixmap 0 I))))
#_BlockMove will probably help. You can cons up, say, a 4K byte
pointer filled with 0's using %put-byte, then use one or more
#_BlockMove's to copy those 0's anywhere you want.