[Python-Dev] Death to WITH_CYCLE_GC
M.-A. Lemburg
mal@lemburg.com
Thu, 04 Jul 2002 13:34:07 +0200
Tim Peters wrote:
> [MAL]
>
>>Then why do we have a switch to optionally remove the Unicode
>>support ?
>
>
> I don't know, although I've asked that question myself. People used to be
> frightened of the Unicode database sizes; I'm not sure they are anymore.
>
>
>>or for disabling interning of strings ?
>
>
> There is no such switch now. There used to be one. Ditto for whether to
> cache hash values. Ditto whether to "cache-align" hash table entries. At
> the time those were nuked, Guido also said he wanted COUNT_ALLOCS to
> disappear (and to act as if it were always #define'd in a Py_TRACE_REFS
> build), but nobody has gotten to that yet.
Interesting. I don't recall any discussions about this...
>>or for caching small integers ?
>
>
> There isn't a switch for that either, although there are two undocumented
> symbols you can #define such that if their sum is <= 0, small ints waste
> *more* memory than if you leave the code alone. There's no way to disable
> the unbounded and immortal int free list, and never was.
I was talking about NSMALLNEGINTS and NSMALLPOSINTS.
>>>>How much memory footprint would removing the #ifdefs
>>>>cause on average ?
>>>
>
>>>6, give or take.
>>
>
>>6 what ? snakes, rabbits, swallows ?
>
>
> You asked an unanswerable (not to mention unparseable) question, I gave a
> useless yet accurate answer -- if you can rephrase your question in a way
> that can be answered, attach whatever units you need to make 6 exactly
> correct <wink>. Although note that since WITH_CYCLE_GC has been #define'd
> by default since it was introduced, removing its #ifdefery would have no
> effect on default builds.
Ok, let's make it parseable then:
a) When removing the GC code from the code base by #undef'ing
WITH_CYCLE_GC, how much smaller is the Python interpreter ?
b) ..., how is pybench affected by this (speedup/slowdown/
unnoticable) ?
c) ..., how many bytes per object are saved for container objects
which are GC aware ?
If we're talking about just a few kB in interpreter size
and only a few kB worth of list and tuples, then removing
is fine. If we're talking about 100kBs, then you ought to
reconsider the move.
>>I'm missing a concise concept here :-)
>>
>>If you want to make life hard for people who want to customize
>>the interpreter, then you should remove *all* such #ifdefs. If
>>not, then having the #ifdefs adds important meta-information
>>to the code.
>
>
> If you don't personally use a specific preprocessor symbol routinely, I
> won't accept your bare assertion that it makes life easier for anyone.
I personally know that developers which have tried to create
a trimmed down version of the interpreter did like the #ifdefs
for removing certain parts like e.g. the complex numbers very
much. I'm just lobbying for them.
After all, someone has to give you a hard time ;-)
--
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
_______________________________________________________________________
eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,...
Python Consulting: http://www.egenix.com/
Python Software: http://www.egenix.com/files/python/