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.ew...@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@python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: https://mail.python.org/mailman/options/python-dev/ > agriff%40tin.it >
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com