[Python-Dev] Caching float(0.0)
Nick Craig-Wood
nick at craig-wood.com
Fri Sep 29 10:14:02 CEST 2006
I just discovered that in a program of mine it was wasting 7MB out of
200MB by storing multiple copies of 0.0. I found this a bit suprising
since I'm used to small ints and strings being cached.
I added the apparently nonsensical lines
+ if age == 0.0:
+ age = 0.0 # return a common object for the common case
and got 7MB of memory back!
Eg :-
Python 2.5c1 (r25c1:51305, Aug 19 2006, 18:23:29)
[GCC 4.1.2 20060814 (prerelease) (Debian 4.1.1-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=0.0
>>> print id(a), id(0.0)
134738828 134738844
>>>
Is there any reason why float() shouldn't cache the value of 0.0 since
it is by far and away the most common value?
A full cache of floats probably doesn't make much sense though since
there are so many 'more' of them than integers and defining small
isn't obvious.
--
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick
More information about the Python-Dev
mailing list