Function Memory Usage
Lie Ryan
lie.1296 at gmail.com
Sat Nov 1 06:16:27 EDT 2008
On Fri, 31 Oct 2008 18:41:58 +0000, Paulo J. Matos wrote:
> Hi all,
>
> What's the best way to know the amount of memory allocated by a function
> and the time it took to run? While the latter is simple to implement
> using a wrapper function, the former is striking me as something that
> needs to be primitive to python. Any tips?
It's impossible to do that in a generic way in any language. You've got
to analyze the code to determine how much memory it uses.
Some knowledge of the language's (actually the implementation's) internal
can help. For example, list is stored as array of pointers to object,
that means the amount of memory used for a list of integers is:
len(ls) + sizeof(int) * len(ls)
note: sizeof is not a real function
or the size of a list of arbitrary content:
len(ls) + sum(sizeof(item) for item in ls)
PS: In reality, it's not as simple as that. CPython allocates more memory
than it actually needs so it doesn't need to reallocate memory again and
again.
Terry Reedy says:
> def zeros(n): return [0]*n
>
> how much memory is that
That is a tricky question, because CPython caches small integers,
including 0. The memory required would be something like len(ls) + 1
More information about the Python-list
mailing list