On Sun, 22 Feb 2009, Phil Stone wrote:
A) Is it true that [maketime] would continually grow the symbol table?
yes.
B) Is it possible to tell how full the symbol table is? How much memory is allocated to it in the first place?
It never gets full. It just becomes bigger and bigger, as long as you have enough RAM. As it gets bigger, symbol-lookup becomes slower, and symbol-generation too as it always involves one symbol-lookup. The lookup time is always O(n). However, in normal circumstances, it's close to n/16384, an extremely small multiple of n, whereas if you're extremely unlucky, it could be just n steps. The symbols are spread out in a large table in a random-looking manner that is not really random. Each slot in the table has a list of symbols which starts being empty and then grows as needed.
If the symbols were organised as a tree, it wouldn't be a theoretical speed problem, but it would still end up eating up RAM.
The table starts at 64k, or 128k in 64-bit mode, and each symbol takes an additional amount of RAM, but it depends on which malloc you use and such.
C) Wouldn't it be nice to have some truly transient symbols, that could be abstraction-local, or at least, re-usable?
yes, but it's nowhere near happening.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec