New submission from Alex <alex.gay...@gmail.com>: Just like we turn BUILD_LIST; COMPARE_OP (in) into a LOAD_CONST if all the members are consts, we can do the same for BUILD_SET, instead turning it into a LOAD_CONST of a frozenset. The following is the bytecode that is current produced for each datastructure.
>>> dis.dis(lambda o: o in (1,2,3)) 1 0 LOAD_FAST 0 (o) 3 LOAD_CONST 3 ((1, 2, 3)) 6 COMPARE_OP 6 (in) 9 RETURN_VALUE >>> dis.dis(lambda o: o in [1,2,3]) 1 0 LOAD_FAST 0 (o) 3 LOAD_CONST 3 ((1, 2, 3)) 6 COMPARE_OP 6 (in) 9 RETURN_VALUE >>> dis.dis(lambda o: o in {1,2,3}) 1 0 LOAD_FAST 0 (o) 3 LOAD_CONST 0 (1) 6 LOAD_CONST 1 (2) 9 LOAD_CONST 2 (3) 12 BUILD_SET 3 15 COMPARE_OP 6 (in) 18 RETURN_VALUE ---------- components: Interpreter Core messages: 91506 nosy: alex severity: normal status: open title: BUILD_SET followed by COMPARE_OP (in) can be optimized if all items are consts versions: Python 3.2 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue6690> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com