[Python-Dev] [ python-Patches-876206 ] scary frame speed hacks (original) (raw)

Raymond Hettinger python at rcn.com
Tue Mar 2 14:42:08 EST 2004


[Skip] > Why not a list of pre-made frames for each code block (default length 1)?

Or, IOW, per-code-block frame freelists (plural). Recursive generators have gotten quite popular in my code . BTW, if a gazillion distinct functions run when starting up a large app, do we hang on to the memory for their gazillion distinct frames forever? Recycling from a common frame pool has memory benefits in cases other than just recursion. Experiment: run test.py from a Zope 2 or Zope 3 checkout, and look at highwater memory consumption with and without the patch.

We should look at keeping the freelist and when a code block needs a frame, it can request the one that it last used if available. Roughly:

def getblock(idnum): if idnum in freelist: return freelist[id] if len(freelist): return freelist.pop() return makeNewFrame()

Raymond



More information about the Python-Dev mailing list