object().__dict__

Phil Connell pconnell at gmail.com
Wed Apr 23 11:50:47 EDT 2014


On Wed, Apr 23, 2014 at 04:21:26PM +0200, Amirouche Boubekki wrote:
> 2014-04-23 15:59 GMT+02:00 Phil Connell <pconnell at gmail.com>:
> 
> > On Wed, Apr 23, 2014 at 03:48:32PM +0200, Amirouche Boubekki wrote:
> > > 2014-04-23 8:11 GMT+02:00 Cameron Simpson <cs at zip.com.au>:
> > > > Look up the "__slots__" dunder var in the Python doco index:
> > > >
> > > >   https://docs.python.org/3/glossary.html#term-slots
> > > >
> > > > You'll see it as a (rarely used, mostly discouraged) way to force a
> > fixed
> > > > set of attributes onto a class. As with object, this brings a smaller
> > > > memory footprint and faster attribute access, but the price is
> > flexibility.
> > > >
> > >
> > > True, still can be the only way to save few MB or... GB without falling
> > > back to C or PyPy.
> > >
> > > Have a look at PyPy to how to save memory (and speed things up) without
> > > slots:
> > >
> > http://morepypy.blogspot.fr/2010/11/efficiently-implementing-python-objects.html
> >
> > Is there any analysis of how this balances increased memory usage from the
> > JIT
> > vs the CPython VM (with a reasonable amount of code)?
> >
> > I'd thought that one of the main disadvantages of PyPy was drastically
> > increased memory usage for any decent-sized program. Would be interested to
> > know if this was not the case :)
> >
> 
> I have a similar thought, I don't how that memory consumption increase (a
> constant? a factor? probably both...)
> 
> but if the program use an absurd amount of memory even in CPython then PyPy
> will be able to catchup based on comment #1 of a PyPy core dev in
> http://tech.oyster.com/save-ram-with-python-slots/ see also
> http://pypy.readthedocs.org/en/latest/interpreter-optimizations.html#dictionary-optimizations

Absolutely. For long-running code manipulating large amounts of data I can
imagine the PyPy optimisations being a win.

On the other hand, if the code/data ratio is larger, CPython may well win in
terms of memory use.


> 
> Still it requires more analysis. When does PyPy trigger the optimization?

Indeed. Without measuring this is all idle speculation ;)





More information about the Python-list mailing list