[Python-Dev] Caching float(0.0) (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Mon Oct 2 15:49:50 CEST 2006
- Previous message: [Python-Dev] Caching float(0.0)
- Next message: [Python-Dev] Caching float(0.0)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Kristján V. Jónsson schrieb:
Well, a lot of extension code, like ours use PyFloatFromDouble(foo); This can be from vectors and stuff.
Hmm. If you get a lot of 0.0 values from vectors and stuff, I would expect that memory usage is already high.
In any case, a module that creates a lot of copies of 0.0 that way could do its own caching, right?
Very often these are values from a database. Integral float values are very common in such case and id didn't occur to me that they weren't being reused, at least for small values.
Sure - but why are keeping people them in memory all the time? Also, isn't it a mis-design of the database if you have many float values in it that represent natural numbers? Shouldn't you use a more appropriate data type, then?
Also, a lot of arithmetic involving floats is expected to end in integers, like computing some index from a float value. Integers get promoted to floats when touched by them, as you know.
Again, sounds like a programming error to me.
Anyway, I now precreate integral values from -10 to 10 with great effect. The cost is minimal, the benefit great.
In an extension module, the knowledge about the application domain is larger, so it may be reasonable to do the caching there. I would still expect that in the typical application where this is an issue, there is some kind of larger design bug.
Regards, Martin
- Previous message: [Python-Dev] Caching float(0.0)
- Next message: [Python-Dev] Caching float(0.0)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]