On 16/09/21 6:56 am, Mostowski Collapse wrote:
What could be slow, repeatedly requesting the "args"
field. Maybe I should do:
help = term.args
i = 0
while i < len(help) - 1:
____mark_term(help[i])
____i += 1
term = help[i]
Yes, that will certainly help.
But you're still evaluating len(help) - 1 every time around
the loop, so this is even better:
help = term.args
n = len(help) - 1
i = 0
while i < n:
mark_term(help[i])
i += 1
term = help[i]
Some general principles to be aware of:
* Almost nothing is free -- Python very literally does what
you tell it to do, even if it looks dumb.
* Access to attributes and global variables is expensive
(requires at least one dict lookup, often more in the case
of attributes).
* Access to *local* variables, on the other hand, is very
cheap (essentially an array lookup).
* Function calls are expensive -- both to look up the name, if
it's global, which it usually is, and the machinery of the
call itself.
* Creating objects is expensive. Creating instances of
user-defined objects is more expensive than built-in ones.
--
Greg
--
https://mail.python.org/mailman/listinfo/python-list