| |
Moloch
Registered: Jan 2002 Posts: 2924 |
Release id #178956 : Plant
Submitted by Compyx [PM] on 23 June 2019
Probably this (from Lemon64 of all places):
There is an even better way to do it - let's abuse the DIM-command!!
Since DIM normally clears an array, why not use it for clearing a bitmap as well?
Try this:
POKE 88,0:POKE 89,63:POKE 113,64:POKE 114,31:POKE 12,1:SYS 45760
This will fill memory from 8192-16191 ($2000-$3F3F) will nullbytes.
- Catboy
Fucking BASIC weirdos :)
User Comment
Submitted by Oswald [PM] on 22 June 2019
IIRC you can clear memory faster with declaring a large array :)
User Comment
Submitted by Oswald [PM] on 22 June 2019
80 mem=8192+int(v/8)*320+int(u/8)*8+(vand7):pokemem,peek(mem)or2^(7-(uand7))
lol :D |
|
... 6 posts hidden. Click here to view all posts.... |
| |
Trash
Registered: Jan 2002 Posts: 122 |
Further optimization may be to dim more frequently used variables later (or earlier), not sure but I am pretty sure the order affects the speed IIRC |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1408 |
The REMs are all after the mainloop so I suspect they wouldn't things change much, but I was indeed wondering about dropping all the active variables down to a single letter.
I forgot about the fast parsing of "." as 0; think I saw that somewhere too.
Trash, that's an excellent point about predeclaring variables; probably applies to the scalars as much as the arrays.
Anyone want to measure the effect of any of these?
(I was initially benchmarking by checking TI before and after a thousand iterations, but counting iterations affects the timing, so at some point I switched to setting a watch in VICE on writes to 2000-3fff, then counting ten iterations and calculating the difference in the cycle counter you get in the monitor) |
| |
Rastah Bar Account closed
Registered: Oct 2012 Posts: 336 |
Turning off interrupts? |
| |
Rudi Account closed
Registered: May 2010 Posts: 125 |
how is
x and 504 different thanx and 248 ? (in that code specifically?) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1408 |
Rudi - you need 504 ($01f8) to support X values greater than 255
That said, -8 also works to clear the low three bits, and a quick test shows it's considerably faster! I guess it avoids a couple of multiply-by-10s in the parser.
I just compared a=ti:fori=1to1000:j=iand-8:next:?ti-a to a=ti:fori=1to1000:j=iand504:next:?ti-a
The latter is around 420 ticks, compared to 320 for the former. |
| |
Rudi Account closed
Registered: May 2010 Posts: 125 |
ok neat |
| |
bugjam
Registered: Apr 2003 Posts: 2579 |
*waitingfornewversion* :-) |
| |
Rudi Account closed
Registered: May 2010 Posts: 125 |
bugjam: ChristopherJam is the Master of size and speed optimizing Basic programs so let him do it :) I can come up with wrong ideas that will lead to some lesser ticks perhaps, but. |
| |
bugjam
Registered: Apr 2003 Posts: 2579 |
Don't be too modest, you triggered the whole thing, which is an achievement as well. :-) |
| |
Rudi Account closed
Registered: May 2010 Posts: 125 |
Thanks bugjam. |
Previous - 1 | 2 - Next |