[Python-Dev] Why does STORE_MAP not take a parameter?

Andrea Griffini agriff at tin.it
Thu Jan 22 09:11:52 CET 2015


In a function call with named arguments the code generated doesn't follow
that pattern:

dis.dis(lambda : f(a=1,b=2,c=3))

displays:

  1           0 LOAD_GLOBAL              0 (foo)
              3 LOAD_CONST               1 ('a')
              6 LOAD_CONST               2 (1)
              9 LOAD_CONST               3 ('b')
             12 LOAD_CONST               4 (2)
             15 LOAD_CONST               5 ('c')
             18 LOAD_CONST               6 (3)
             21 CALL_FUNCTION          768

             24 RETURN_VALUE


so the problem is only about inlined dicts (somewhat common but not
ubiquitous as they are in Javascript).

Andrea

On Thu, Jan 22, 2015 at 12:57 AM, Greg Ewing <greg.ewing at canterbury.ac.nz>
wrote:

> On 01/21/2015 11:16 PM, Neil Girdhar wrote:
>
>> Why not have BUILD_MAP work like BUILD_LIST?   I.e., STORE_MAP takes a
>> parameter n and adds the last n pairs of stack elements into the n-1 stack
>> element (the dictionary).
>>
>
> It probably wouldn't make much difference. Building a list is
> substantially cheaper if you have all the items on hand and can
> copy them in en masse. But adding an item to a dict entails
> quite a lot of overhead, since you need to hash the key, look
> for a free slot, etc. and this would likely swamp any gain
> from executing less bytecodes. And on the other side of the
> equation, evaluating the items one at a time requires less
> stack space, so the stack frame can be smaller.
>
> But as always, you can't be sure without measuring it, and
> this would be a good thing for someone interested to try out.
>
> --
> Greg
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/
> agriff%40tin.it
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150122/397699db/attachment.html>


More information about the Python-Dev mailing list