Cezary Wagner <cezary.wag...@gmail.com> added the comment:
Some more experiments: import dis import timeit REPEATS = 100 def test1(): selected = [] for i in range(REPEATS): if i >= 25 and i <= 75: selected.append(i) return selected def test2(): selected = [] for i in range(REPEATS): if 25 <= i <= 75: selected.append(i) return selected def test3(): return [x for x in range(REPEATS) if x >= 25 and x <= 75] def test4(): return [x for x in range(REPEATS) if 25 <= x <= 75] def test(f): print(dis.dis(f.__code__.co_code)) print(timeit.timeit(f)) test(test1) test(test2) test(test3) test(test4) Result: 0 BUILD_LIST 0 2 STORE_FAST 0 (0) 4 LOAD_GLOBAL 0 (0) 6 LOAD_GLOBAL 1 (1) 8 CALL_FUNCTION 1 10 GET_ITER >> 12 FOR_ITER 15 (to 44) 14 STORE_FAST 1 (1) 16 LOAD_FAST 1 (1) 18 LOAD_CONST 1 (1) 20 COMPARE_OP 5 (>=) 22 POP_JUMP_IF_FALSE 21 (to 42) 24 LOAD_FAST 1 (1) 26 LOAD_CONST 2 (2) 28 COMPARE_OP 1 (<=) 30 POP_JUMP_IF_FALSE 21 (to 42) 32 LOAD_FAST 0 (0) 34 LOAD_METHOD 2 (2) 36 LOAD_FAST 1 (1) 38 CALL_METHOD 1 40 POP_TOP >> 42 JUMP_ABSOLUTE 6 (to 12) >> 44 LOAD_FAST 0 (0) 46 RETURN_VALUE None 4.565677999999025 0 BUILD_LIST 0 2 STORE_FAST 0 (0) 4 LOAD_GLOBAL 0 (0) 6 LOAD_GLOBAL 1 (1) 8 CALL_FUNCTION 1 10 GET_ITER >> 12 FOR_ITER 19 (to 52) 14 STORE_FAST 1 (1) 16 LOAD_CONST 1 (1) 18 LOAD_FAST 1 (1) 20 DUP_TOP 22 ROT_THREE 24 COMPARE_OP 1 (<=) 26 POP_JUMP_IF_FALSE 18 (to 36) 28 LOAD_CONST 2 (2) 30 COMPARE_OP 1 (<=) 32 POP_JUMP_IF_FALSE 25 (to 50) 34 JUMP_FORWARD 2 (to 40) >> 36 POP_TOP 38 JUMP_ABSOLUTE 6 (to 12) >> 40 LOAD_FAST 0 (0) 42 LOAD_METHOD 2 (2) 44 LOAD_FAST 1 (1) 46 CALL_METHOD 1 48 POP_TOP >> 50 JUMP_ABSOLUTE 6 (to 12) >> 52 LOAD_FAST 0 (0) 54 RETURN_VALUE None 5.6398234000007506 0 LOAD_CONST 1 (1) 2 LOAD_CONST 2 (2) 4 MAKE_FUNCTION 0 6 LOAD_GLOBAL 0 (0) 8 LOAD_GLOBAL 1 (1) 10 CALL_FUNCTION 1 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE None 3.8792907999959425 0 LOAD_CONST 1 (1) 2 LOAD_CONST 2 (2) 4 MAKE_FUNCTION 0 6 LOAD_GLOBAL 0 (0) 8 LOAD_GLOBAL 1 (1) 10 CALL_FUNCTION 1 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE None 3.8591266999937943 ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue47221> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com