[Python-Dev] cpython: Implement PEP 412: Key-sharing dictionaries (closes #13903)

Kristján Valur Jónsson kristjan at ccpgames.com
Wed Apr 25 11:11:51 CEST 2012



> -----Original Message-----
> From: python-dev-bounces+kristjan=ccpgames.com at python.org
> [mailto:python-dev-bounces+kristjan=ccpgames.com at python.org] On
> Behalf Of martin at v.loewis.de
> Sent: 24. apríl 2012 17:44
> To: python-dev at python.org
> Subject: Re: [Python-Dev] cpython: Implement PEP 412: Key-sharing
> dictionaries (closes #13903)
> 
> > Benchmarks should measure memory usage too, of course.  Sadly that is
> > not possible in standard cPython.
> 
> It's actually very easy in standard CPython, using sys.getsizeof.
>
Yes, you can query each python object about how big it thinks it is.
What I'm speaking of is more like:
start_allocs, start_mem = allocator.get_current()
allocator.reset_limits()
run_complicated_tests()

end_allocs, end_mem = allocator.get=current()

Print "delta blocks: %d, delta mem: %d"%(end_allocs-start_allocs, end_mem-start_mem)
print "peak blocks: %d, peak mem: %d"%allocator.peak()

 
> > Btw, this is of great interest to me at the moment, our Shanghai
> > engineers are screaming at the memory waste incurred by dictionaries.
> > A 10 item dictionary consumes 1/2k on 32 bits, did you know this?
> 
> I did.
> 
> In Python 3.3, this now goes down to 248 bytes (32 bits).
> 
I'm going to experiment with tunable parameters in 2.7 to trade performance for memory.  In some applications, memory trumps performance.

K



More information about the Python-Dev mailing list