[Coco] INSTR question
William Astle
lost at l-w.ca
Thu Feb 9 17:34:29 EST 2017
On 2017-02-09 02:12 PM, Allen Huffman wrote:
> I never tried to use INKEY$ directly until today, and benchmarks showed it was much faster for this than assigning a variable.
It follows logically that this would be the case. Of course, it requires
even thinking about it to realize that. The reason it is faster is:
1. It eliminates at least two variable table searches and a possible
variable table expansion. Variable table searches can be quite slow if
the variable you are looking for isn't found or is at the end of the
table. The search is a simple linear scan from the start of the table
until either the end or the the variable is found.
2. It eliminates a trip through the assignment ("LET") code, which while
not terribly slow does add some overhead.
3. It eliminates one trip through the expression evaluator. Again,
that's not particularly show, but it does add overhead.
Also, the check for NULL will add yet another variable table search and
a run through the expression evaluator.
Do that stuff in a loop and those overheads add up substantially. While
not a big deal in a "wait for a keypress" loop, it could be in a game
logic loop where stuff has to happen while waiting.
It also has the advantage that it avoids creating a variable table
entry, which can be important if you're running tight on memory. (That's
7 bytes for the variable table entry.)
More information about the Coco
mailing list