[Guido]
> Look at the following code.
>
> def foo(a, b):
>     x = a + b
>     if not x:
>         return None
>     sleep(1)  # A calculation that does not use x
>     return a*b
>
> This code DECREFs x when the frame is exited (at the return statement).
> But (assuming) we can clearly see that x is not needed during the sleep
> (representing a big calculation), we could insert a "del x" statement before
> the sleep.
>
> I think our compiler is smart enough to find out *some* cases where it could
> safely insert such del instructions. And this would potentially save some
> memory. (For example, in the above example, if a and b are large lists,
> x would be an even larger list, and its memory could be freed earlier.)
>
> For sure, we could manually insert del statements in code where it
> matters to us. But if the compiler could do it in all code, regardless
> of whether it matters to us or not, it would probably catch some useful
> places where we wouldn't even have thought of this idea, and we
> might see a modest memory saving for most programs.
>
> Can anyone tear this idea apart?

My guess:  it would overwhelmingly free tiny objects, giving a
literally unmeasurable (just theoretically provable) memory savings,
at the cost of adding extra trips around the eval loop.  So not really
attractive to me.  But when I leave "large" temp objects hanging and
give a rip, I already stick in "del" statements anyway.  Very rarely,
but it happens.

Which is addressing it at a higher level than any other feedback
you're going to get ;-)  Of course there can be visible consequences
when people are playing with introspection gimmicks.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LFUJ4SLORLT6J75IULDFL7MK3VUKVQMA/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to