From dd80f762650f42f5f9ae820d9f55b21ed6f33bc0 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 7 Mar 2004 07:31:06 +0000 Subject: SF patch #910929: Optimize list comprehensions Add a new opcode, LIST_APPEND, and apply it to the code generation for list comprehensions. Reduces the per-loop overhead by about a third. --- Python/compile.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'Python/compile.c') diff --git a/Python/compile.c b/Python/compile.c index 04d8b65f4b..f58fb83efc 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1552,8 +1552,7 @@ com_list_iter(struct compiling *c, com_addop_varname(c, VAR_LOAD, t); com_push(c, 1); com_node(c, e); - com_addoparg(c, CALL_FUNCTION, 1); - com_addbyte(c, POP_TOP); + com_addbyte(c, LIST_APPEND); com_pop(c, 2); } } @@ -1569,7 +1568,6 @@ com_list_comprehension(struct compiling *c, node *n) com_addoparg(c, BUILD_LIST, 0); com_addbyte(c, DUP_TOP); /* leave the result on the stack */ com_push(c, 2); - com_addop_name(c, LOAD_ATTR, "append"); com_addop_varname(c, VAR_STORE, tmpname); com_pop(c, 1); com_list_for(c, CHILD(n, 1), CHILD(n, 0), tmpname); -- cgit v1.2.1