[Python-Dev] Why does STORE_MAP not take a parameter?
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
dis.dis(lambda : f(a=1,b=2,c=3))
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
so the problem is only about inlined dicts (somewhat common but not
On Thu, Jan 22, 2015 at 12:57 AM, Greg Ewing <greg.ewing at canterbury.ac.nz>
> 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.
> Python-Dev mailing list
> Python-Dev at python.org
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev