>>> import sys >>> import platform >>> platform.system() 'Linux' >>> platform.release() '3.13.0-37-generic' >>> sys.version '2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2]' >>> from timeit import timeit >>> from dis import dis >>>
def a(): d = {} return d >>> >>> timeit(a, number=1000000) ... 0.102125167847 >>> >>> dis(a) 5 0 BUILD_MAP 0 3 STORE_FAST 0 (d) 6 6 LOAD_FAST 0 (d) 9 RETURN_VALUE >>>
def a(): d = dict() return d >>> >>> timeit(a, number=1000000) ... 0.160122156143 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (dict) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (d) 6 9 LOAD_FAST 0 (d) 12 RETURN_VALUE >>>
def a(): l = [0, 8, 6, 4, 2, 1, 3, 5, 7, 9] l.sort() return l >>> >>> timeit(a, number=1000000) ... 0.616376876831 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 LOAD_CONST 2 (8) 6 LOAD_CONST 3 (6) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (2) 15 LOAD_CONST 6 (1) 18 LOAD_CONST 7 (3) 21 LOAD_CONST 8 (5) 24 LOAD_CONST 9 (7) 27 LOAD_CONST 10 (9) 30 BUILD_LIST 10 33 STORE_FAST 0 (l) 6 36 LOAD_FAST 0 (l) 39 LOAD_ATTR 0 (sort) 42 CALL_FUNCTION 0 45 POP_TOP 7 46 LOAD_FAST 0 (l) 49 RETURN_VALUE >>>
def a(): l = [0, 8, 6, 4, 2, 1, 3, 5, 7, 9] return sorted(l) >>> >>> timeit(a, number=1000000) ... 0.799111127853 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 LOAD_CONST 2 (8) 6 LOAD_CONST 3 (6) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (2) 15 LOAD_CONST 6 (1) 18 LOAD_CONST 7 (3) 21 LOAD_CONST 8 (5) 24 LOAD_CONST 9 (7) 27 LOAD_CONST 10 (9) 30 BUILD_LIST 10 33 STORE_FAST 0 (l) 6 36 LOAD_GLOBAL 0 (sorted) 39 LOAD_FAST 0 (l) 42 CALL_FUNCTION 1 45 RETURN_VALUE >>>
def a(): a, b, c, d, e, f, g, h, i, j = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 return j, i, h, g, f, e, d, c, b, a >>> >>> timeit(a, number=1000000) ... 0.282160043716 >>> >>> dis(a) 5 0 LOAD_CONST 11 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9)) 3 UNPACK_SEQUENCE 10 6 STORE_FAST 0 (a) 9 STORE_FAST 1 (b) 12 STORE_FAST 2 (c) 15 STORE_FAST 3 (d) 18 STORE_FAST 4 (e) 21 STORE_FAST 5 (f) 24 STORE_FAST 6 (g) 27 STORE_FAST 7 (h) 30 STORE_FAST 8 (i) 33 STORE_FAST 9 (j) 6 36 LOAD_FAST 9 (j) 39 LOAD_FAST 8 (i) 42 LOAD_FAST 7 (h) 45 LOAD_FAST 6 (g) 48 LOAD_FAST 5 (f) 51 LOAD_FAST 4 (e) 54 LOAD_FAST 3 (d) 57 LOAD_FAST 2 (c) 60 LOAD_FAST 1 (b) 63 LOAD_FAST 0 (a) 66 BUILD_TUPLE 10 69 RETURN_VALUE >>>
def a(): a = 0 b = 1 c = 2 d = 3 e = 4 f = 5 g = 6 h = 7 i = 8 j = 9 return j, i, h, g, f, e, d, c, b, a >>> >>> timeit(a, number=1000000) ... 0.303076982498 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (1) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 3 (2) 15 STORE_FAST 2 (c) 8 18 LOAD_CONST 4 (3) 21 STORE_FAST 3 (d) 9 24 LOAD_CONST 5 (4) 27 STORE_FAST 4 (e) 10 30 LOAD_CONST 6 (5) 33 STORE_FAST 5 (f) 11 36 LOAD_CONST 7 (6) 39 STORE_FAST 6 (g) 12 42 LOAD_CONST 8 (7) 45 STORE_FAST 7 (h) 13 48 LOAD_CONST 9 (8) 51 STORE_FAST 8 (i) 14 54 LOAD_CONST 10 (9) 57 STORE_FAST 9 (j) 15 60 LOAD_FAST 9 (j) 63 LOAD_FAST 8 (i) 66 LOAD_FAST 7 (h) 69 LOAD_FAST 6 (g) 72 LOAD_FAST 5 (f) 75 LOAD_FAST 4 (e) 78 LOAD_FAST 3 (d) 81 LOAD_FAST 2 (c) 84 LOAD_FAST 1 (b) 87 LOAD_FAST 0 (a) 90 BUILD_TUPLE 10 93 RETURN_VALUE >>>
def a(): a, b, c, d, e, f = 2, 5, 52, 25, 225, 552 if a < b and b < c and c < d and d < e and e < f: return True return False >>> >>> timeit(a, number=1000000) ... 0.265587091446 >>> >>> dis(a) 5 0 LOAD_CONST 7 ((2, 5, 52, 25, 225, 552)) 3 UNPACK_SEQUENCE 6 6 STORE_FAST 0 (a) 9 STORE_FAST 1 (b) 12 STORE_FAST 2 (c) 15 STORE_FAST 3 (d) 18 STORE_FAST 4 (e) 21 STORE_FAST 5 (f) 6 24 LOAD_FAST 0 (a) 27 LOAD_FAST 1 (b) 30 COMPARE_OP 0 (<) 33 POP_JUMP_IF_FALSE 88 36 LOAD_FAST 1 (b) 39 LOAD_FAST 2 (c) 42 COMPARE_OP 0 (<) 45 POP_JUMP_IF_FALSE 88 48 LOAD_FAST 2 (c) 51 LOAD_FAST 3 (d) 54 COMPARE_OP 0 (<) 57 POP_JUMP_IF_FALSE 88 60 LOAD_FAST 3 (d) 63 LOAD_FAST 4 (e) 66 COMPARE_OP 0 (<) 69 POP_JUMP_IF_FALSE 88 72 LOAD_FAST 4 (e) 75 LOAD_FAST 5 (f) 78 COMPARE_OP 0 (<) 81 POP_JUMP_IF_FALSE 88 7 84 LOAD_GLOBAL 0 (True) 87 RETURN_VALUE 8 >> 88 LOAD_GLOBAL 1 (False) 91 RETURN_VALUE >>>
def a(): a, b, c, d, e, f = 2, 5, 52, 25, 225, 552 if a < b < c < d < e < f: return True return False >>> >>> timeit(a, number=1000000) ... 0.283268928528 >>> >>> dis(a) 5 0 LOAD_CONST 7 ((2, 5, 52, 25, 225, 552)) 3 UNPACK_SEQUENCE 6 6 STORE_FAST 0 (a) 9 STORE_FAST 1 (b) 12 STORE_FAST 2 (c) 15 STORE_FAST 3 (d) 18 STORE_FAST 4 (e) 21 STORE_FAST 5 (f) 6 24 LOAD_FAST 0 (a) 27 LOAD_FAST 1 (b) 30 DUP_TOP 31 ROT_THREE 32 COMPARE_OP 0 (<) 35 JUMP_IF_FALSE_OR_POP 80 38 LOAD_FAST 2 (c) 41 DUP_TOP 42 ROT_THREE 43 COMPARE_OP 0 (<) 46 JUMP_IF_FALSE_OR_POP 80 49 LOAD_FAST 3 (d) 52 DUP_TOP 53 ROT_THREE 54 COMPARE_OP 0 (<) 57 JUMP_IF_FALSE_OR_POP 80 60 LOAD_FAST 4 (e) 63 DUP_TOP 64 ROT_THREE 65 COMPARE_OP 0 (<) 68 JUMP_IF_FALSE_OR_POP 80 71 LOAD_FAST 5 (f) 74 COMPARE_OP 0 (<) 77 JUMP_FORWARD 2 (to 82) >> 80 ROT_TWO 81 POP_TOP >> 82 POP_JUMP_IF_FALSE 89 7 85 LOAD_GLOBAL 0 (True) 88 RETURN_VALUE 8 >> 89 LOAD_GLOBAL 1 (False) 92 RETURN_VALUE >>>
def a(): a = True if a: return True return False >>> >>> timeit(a, number=1000000) ... 0.117864847183 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 POP_JUMP_IF_FALSE 16 7 12 LOAD_GLOBAL 0 (True) 15 RETURN_VALUE 8 >> 16 LOAD_GLOBAL 1 (False) 19 RETURN_VALUE >>>
def a(): a = True if a is True: return True return False >>> >>> timeit(a, number=1000000) ... 0.156682014465 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_GLOBAL 0 (True) 12 COMPARE_OP 8 (is) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = True if a == True: return True return False >>> >>> timeit(a, number=1000000) ... 0.16219997406 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_GLOBAL 0 (True) 12 COMPARE_OP 2 (==) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if a != 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.134964942932 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 3 (!=) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if a is not 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.136057138443 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 9 (is not) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if not a is 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.136666059494 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 9 (is not) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = [] if not a: return True return False >>> >>> timeit(a, number=1000000) ... 0.121457099915 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 POP_JUMP_IF_TRUE 16 7 12 LOAD_GLOBAL 0 (True) 15 RETURN_VALUE 8 >> 16 LOAD_GLOBAL 1 (False) 19 RETURN_VALUE >>>
def a(): a = [] if a: return False return True >>> >>> timeit(a, number=1000000) ... 0.124106884003 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 POP_JUMP_IF_FALSE 16 7 12 LOAD_GLOBAL 0 (False) 15 RETURN_VALUE 8 >> 16 LOAD_GLOBAL 1 (True) 19 RETURN_VALUE >>>
def a(): a = [] if a == []: return True return False >>> >>> timeit(a, number=1000000) ... 0.143739938736 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 BUILD_LIST 0 12 COMPARE_OP 2 (==) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = [] if len(a) <= 0: return True return False >>> >>> timeit(a, number=1000000) ... 0.162872076035 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 0 (len) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 15 LOAD_CONST 1 (0) 18 COMPARE_OP 1 (<=) 21 POP_JUMP_IF_FALSE 28 7 24 LOAD_GLOBAL 1 (True) 27 RETURN_VALUE 8 >> 28 LOAD_GLOBAL 2 (False) 31 RETURN_VALUE >>>
def a(): a = object() if a: return True return False >>> >>> timeit(a, number=1000000) ... 0.166066884995 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 POP_JUMP_IF_FALSE 19 7 15 LOAD_GLOBAL 1 (True) 18 RETURN_VALUE 8 >> 19 LOAD_GLOBAL 2 (False) 22 RETURN_VALUE >>>
def a(): a = object() if not a: return False return True >>> >>> timeit(a, number=1000000) ... 0.170904159546 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 POP_JUMP_IF_TRUE 19 7 15 LOAD_GLOBAL 1 (False) 18 RETURN_VALUE 8 >> 19 LOAD_GLOBAL 2 (True) 22 RETURN_VALUE >>>
def a(): a = object() if a is None: return False return True >>> >>> timeit(a, number=1000000) ... 0.176799058914 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 LOAD_CONST 0 (None) 15 COMPARE_OP 8 (is) 18 POP_JUMP_IF_FALSE 25 7 21 LOAD_GLOBAL 2 (False) 24 RETURN_VALUE 8 >> 25 LOAD_GLOBAL 3 (True) 28 RETURN_VALUE >>>
def a(): a = object() if a is not None: return True return False >>> >>> timeit(a, number=1000000) ... 0.177442073822 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 LOAD_CONST 0 (None) 15 COMPARE_OP 9 (is not) 18 POP_JUMP_IF_FALSE 25 7 21 LOAD_GLOBAL 2 (True) 24 RETURN_VALUE 8 >> 25 LOAD_GLOBAL 3 (False) 28 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] s = 0 for p, v in enumerate(a): s += p s += v return s >>> >>> timeit(a, number=1000000) ... 0.818370103836 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 BUILD_LIST 5 18 STORE_FAST 0 (a) 6 21 LOAD_CONST 6 (0) 24 STORE_FAST 1 (s) 7 27 SETUP_LOOP 46 (to 76) 30 LOAD_GLOBAL 0 (enumerate) 33 LOAD_FAST 0 (a) 36 CALL_FUNCTION 1 39 GET_ITER >> 40 FOR_ITER 32 (to 75) 43 UNPACK_SEQUENCE 2 46 STORE_FAST 2 (p) 49 STORE_FAST 3 (v) 8 52 LOAD_FAST 1 (s) 55 LOAD_FAST 2 (p) 58 INPLACE_ADD 59 STORE_FAST 1 (s) 9 62 LOAD_FAST 1 (s) 65 LOAD_FAST 3 (v) 68 INPLACE_ADD 69 STORE_FAST 1 (s) 72 JUMP_ABSOLUTE 40 >> 75 POP_BLOCK 10 >> 76 LOAD_FAST 1 (s) 79 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] s = 0 for i in range(len(a)): s += i s += a[i] return s >>> >>> timeit(a, number=1000000) ... 0.835714101791 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 BUILD_LIST 5 18 STORE_FAST 0 (a) 6 21 LOAD_CONST 6 (0) 24 STORE_FAST 1 (s) 7 27 SETUP_LOOP 50 (to 80) 30 LOAD_GLOBAL 0 (range) 33 LOAD_GLOBAL 1 (len) 36 LOAD_FAST 0 (a) 39 CALL_FUNCTION 1 42 CALL_FUNCTION 1 45 GET_ITER >> 46 FOR_ITER 30 (to 79) 49 STORE_FAST 2 (i) 8 52 LOAD_FAST 1 (s) 55 LOAD_FAST 2 (i) 58 INPLACE_ADD 59 STORE_FAST 1 (s) 9 62 LOAD_FAST 1 (s) 65 LOAD_FAST 0 (a) 68 LOAD_FAST 2 (i) 71 BINARY_SUBSCR 72 INPLACE_ADD 73 STORE_FAST 1 (s) 76 JUMP_ABSOLUTE 46 >> 79 POP_BLOCK 10 >> 80 LOAD_FAST 1 (s) 83 RETURN_VALUE >>>
def a(): r = '' for i in range(10): r += str(i) return r >>> >>> timeit(a, number=1000000) ... 1.74822998047 >>> >>> dis(a) 5 0 LOAD_CONST 1 ('') 3 STORE_FAST 0 (r) 6 6 SETUP_LOOP 36 (to 45) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 2 (10) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 22 (to 44) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 0 (r) 28 LOAD_GLOBAL 1 (str) 31 LOAD_FAST 1 (i) 34 CALL_FUNCTION 1 37 INPLACE_ADD 38 STORE_FAST 0 (r) 41 JUMP_ABSOLUTE 19 >> 44 POP_BLOCK 8 >> 45 LOAD_FAST 0 (r) 48 RETURN_VALUE >>>
def a(): r = [] for i in range(10): r.append(str(i)) return ''.join(r) >>> >>> timeit(a, number=1000000) ... 2.21181702614 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (r) 6 6 SETUP_LOOP 39 (to 48) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 1 (10) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 25 (to 47) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 0 (r) 28 LOAD_ATTR 1 (append) 31 LOAD_GLOBAL 2 (str) 34 LOAD_FAST 1 (i) 37 CALL_FUNCTION 1 40 CALL_FUNCTION 1 43 POP_TOP 44 JUMP_ABSOLUTE 19 >> 47 POP_BLOCK 8 >> 48 LOAD_CONST 2 ('') 51 LOAD_ATTR 3 (join) 54 LOAD_FAST 0 (r) 57 CALL_FUNCTION 1 60 RETURN_VALUE >>>
def a(): a = 5 b = 2 c = 3 return "%s" % (a*(b+c)) >>> >>> timeit(a, number=1000000) ... 0.336875200272 >>> >>> dis(a) 5 0 LOAD_CONST 1 (5) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (2) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 3 (3) 15 STORE_FAST 2 (c) 8 18 LOAD_CONST 4 ('%s') 21 LOAD_FAST 0 (a) 24 LOAD_FAST 1 (b) 27 LOAD_FAST 2 (c) 30 BINARY_ADD 31 BINARY_MULTIPLY 32 BINARY_MODULO 33 RETURN_VALUE >>>
def a(): a = 5 b = 2 c = 3 return str(a*(b+c)) >>> >>> timeit(a, number=1000000) ... 0.397536039352 >>> >>> dis(a) 5 0 LOAD_CONST 1 (5) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (2) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 3 (3) 15 STORE_FAST 2 (c) 8 18 LOAD_GLOBAL 0 (str) 21 LOAD_FAST 0 (a) 24 LOAD_FAST 1 (b) 27 LOAD_FAST 2 (c) 30 BINARY_ADD 31 BINARY_MULTIPLY 32 CALL_FUNCTION 1 35 RETURN_VALUE >>>
def a(): a = 5 b = 2 c = 3 return "%d" % (a*(b+c)) >>> >>> timeit(a, number=1000000) ... 0.681240081787 >>> >>> dis(a) 5 0 LOAD_CONST 1 (5) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (2) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 3 (3) 15 STORE_FAST 2 (c) 8 18 LOAD_CONST 4 ('%d') 21 LOAD_FAST 0 (a) 24 LOAD_FAST 1 (b) 27 LOAD_FAST 2 (c) 30 BINARY_ADD 31 BINARY_MULTIPLY 32 BINARY_MODULO 33 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] return len(a) >>> >>> timeit(a, number=1000000) ... 0.230278015137 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 BUILD_LIST 5 18 STORE_FAST 0 (a) 6 21 LOAD_GLOBAL 0 (len) 24 LOAD_FAST 0 (a) 27 CALL_FUNCTION 1 30 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] return a.__len__() >>> >>> timeit(a, number=1000000) ... 0.250301122665 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 BUILD_LIST 5 18 STORE_FAST 0 (a) 6 21 LOAD_FAST 0 (a) 24 LOAD_ATTR 0 (__len__) 27 CALL_FUNCTION 0 30 RETURN_VALUE >>>
def a(): a = 1 b = 2 c = 2 d = 5 return (a+b+c)*d >>> >>> timeit(a, number=1000000) ... 0.263116121292 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (2) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 2 (2) 15 STORE_FAST 2 (c) 8 18 LOAD_CONST 3 (5) 21 STORE_FAST 3 (d) 9 24 LOAD_FAST 0 (a) 27 LOAD_FAST 1 (b) 30 BINARY_ADD 31 LOAD_FAST 2 (c) 34 BINARY_ADD 35 LOAD_FAST 3 (d) 38 BINARY_MULTIPLY 39 RETURN_VALUE >>>
def a(): a = 1 b = 2 c = 2 d = 5 return (a.__add__(b.__add__(c))).__mul__(d) >>> >>> timeit(a, number=1000000) ... 0.44026684761 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_CONST 2 (2) 9 STORE_FAST 1 (b) 7 12 LOAD_CONST 2 (2) 15 STORE_FAST 2 (c) 8 18 LOAD_CONST 3 (5) 21 STORE_FAST 3 (d) 9 24 LOAD_FAST 0 (a) 27 LOAD_ATTR 0 (__add__) 30 LOAD_FAST 1 (b) 33 LOAD_ATTR 0 (__add__) 36 LOAD_FAST 2 (c) 39 CALL_FUNCTION 1 42 CALL_FUNCTION 1 45 LOAD_ATTR 1 (__mul__) 48 LOAD_FAST 3 (d) 51 CALL_FUNCTION 1 54 RETURN_VALUE >>>
class Z(): def __init__(self, v): self.v = v def __mul__(self, o): return Z(self.v * o.v) def __add__(self, o): return Z(self.v + o.v) def a(): a = Z(5) b = Z(2) c = Z(3) return (b.__add__(c)).__mul__(a) >>> >>> timeit(a, number=1000000) ... 1.75202202797 >>> >>> dis(a) 17 0 LOAD_GLOBAL 0 (Z) 3 LOAD_CONST 1 (5) 6 CALL_FUNCTION 1 9 STORE_FAST 0 (a) 18 12 LOAD_GLOBAL 0 (Z) 15 LOAD_CONST 2 (2) 18 CALL_FUNCTION 1 21 STORE_FAST 1 (b) 19 24 LOAD_GLOBAL 0 (Z) 27 LOAD_CONST 3 (3) 30 CALL_FUNCTION 1 33 STORE_FAST 2 (c) 20 36 LOAD_FAST 1 (b) 39 LOAD_ATTR 1 (__add__) 42 LOAD_FAST 2 (c) 45 CALL_FUNCTION 1 48 LOAD_ATTR 2 (__mul__) 51 LOAD_FAST 0 (a) 54 CALL_FUNCTION 1 57 RETURN_VALUE >>>
class Z(): def __init__(self, v): self.v = v def __mul__(self, o): return Z(self.v * o.v) def __add__(self, o): return Z(self.v + o.v) def a(): a = Z(5) b = Z(2) c = Z(3) return (b + c) * a >>> >>> timeit(a, number=1000000) ... 2.9338350296 >>> >>> dis(a) 17 0 LOAD_GLOBAL 0 (Z) 3 LOAD_CONST 1 (5) 6 CALL_FUNCTION 1 9 STORE_FAST 0 (a) 18 12 LOAD_GLOBAL 0 (Z) 15 LOAD_CONST 2 (2) 18 CALL_FUNCTION 1 21 STORE_FAST 1 (b) 19 24 LOAD_GLOBAL 0 (Z) 27 LOAD_CONST 3 (3) 30 CALL_FUNCTION 1 33 STORE_FAST 2 (c) 20 36 LOAD_FAST 1 (b) 39 LOAD_FAST 2 (c) 42 BINARY_ADD 43 LOAD_FAST 0 (a) 46 BINARY_MULTIPLY 47 RETURN_VALUE >>>
def a(): s = 0 for i in range(50000): s += i return s number = 100000 >>> >>> timeit(a, number=100000) ... 186.527575016 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (s) 6 6 SETUP_LOOP 30 (to 39) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 2 (50000) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 16 (to 38) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 0 (s) 28 LOAD_FAST 1 (i) 31 INPLACE_ADD 32 STORE_FAST 0 (s) 35 JUMP_ABSOLUTE 19 >> 38 POP_BLOCK 8 >> 39 LOAD_FAST 0 (s) 42 RETURN_VALUE >>>
def a(): return sum(i for i in range(50000)) number = 100000 >>> >>> timeit(a, number=100000) ... 224.653593063 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 LOAD_CONST 1 (<code object <genexpr> at 0x7fdb97177330, file "/tmp/__pfw_test15_t2.py", line 5>) 6 MAKE_FUNCTION 0 9 LOAD_GLOBAL 1 (range) 12 LOAD_CONST 2 (50000) 15 CALL_FUNCTION 1 18 GET_ITER 19 CALL_FUNCTION 1 22 CALL_FUNCTION 1 25 RETURN_VALUE >>>
def a(): return [i for i in range(1000)] number = 100000 >>> >>> timeit(a, number=100000) ... 3.14394903183 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 LOAD_GLOBAL 0 (range) 6 LOAD_CONST 1 (1000) 9 CALL_FUNCTION 1 12 GET_ITER >> 13 FOR_ITER 12 (to 28) 16 STORE_FAST 0 (i) 19 LOAD_FAST 0 (i) 22 LIST_APPEND 2 25 JUMP_ABSOLUTE 13 >> 28 RETURN_VALUE >>>
def a(): l = [] for i in range(1000): l.append(i) return l number = 100000 >>> >>> timeit(a, number=100000) ... 6.76032280922 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (l) 6 6 SETUP_LOOP 33 (to 42) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 1 (1000) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 19 (to 41) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 0 (l) 28 LOAD_ATTR 1 (append) 31 LOAD_FAST 1 (i) 34 CALL_FUNCTION 1 37 POP_TOP 38 JUMP_ABSOLUTE 19 >> 41 POP_BLOCK 8 >> 42 LOAD_FAST 0 (l) 45 RETURN_VALUE >>>
def a(): return {str(i): i*2 for i in range(100)} >>> >>> timeit(a, number=1000000) ... 18.5734648705 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <dictcomp> at 0x7f6024d42330, file "/tmp/__pfw_test17_t3.py", line 5>) 3 MAKE_FUNCTION 0 6 LOAD_GLOBAL 0 (range) 9 LOAD_CONST 2 (100) 12 CALL_FUNCTION 1 15 GET_ITER 16 CALL_FUNCTION 1 19 RETURN_VALUE >>>
def a(): d = {} for i in range(100): d[str(i)] = i*2 return d >>> >>> timeit(a, number=1000000) ... 19.5818428993 >>> >>> dis(a) 5 0 BUILD_MAP 0 3 STORE_FAST 0 (d) 6 6 SETUP_LOOP 40 (to 49) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 1 (100) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 26 (to 48) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 1 (i) 28 LOAD_CONST 2 (2) 31 BINARY_MULTIPLY 32 LOAD_FAST 0 (d) 35 LOAD_GLOBAL 1 (str) 38 LOAD_FAST 1 (i) 41 CALL_FUNCTION 1 44 STORE_SUBSCR 45 JUMP_ABSOLUTE 19 >> 48 POP_BLOCK 8 >> 49 LOAD_FAST 0 (d) 52 RETURN_VALUE >>>
def a(): d = {} for i in range(100): d.update({str(i): i*2}) return d >>> >>> timeit(a, number=1000000) ... 38.7991042137 >>> >>> dis(a) 5 0 BUILD_MAP 0 3 STORE_FAST 0 (d) 6 6 SETUP_LOOP 50 (to 59) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 1 (100) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 36 (to 58) 22 STORE_FAST 1 (i) 7 25 LOAD_FAST 0 (d) 28 LOAD_ATTR 1 (update) 31 BUILD_MAP 1 34 LOAD_FAST 1 (i) 37 LOAD_CONST 2 (2) 40 BINARY_MULTIPLY 41 LOAD_GLOBAL 2 (str) 44 LOAD_FAST 1 (i) 47 CALL_FUNCTION 1 50 STORE_MAP 51 CALL_FUNCTION 1 54 POP_TOP 55 JUMP_ABSOLUTE 19 >> 58 POP_BLOCK 8 >> 59 LOAD_FAST 0 (d) 62 RETURN_VALUE >>>
def a(): l = range(50, -20, -2) return {p: v for p, v in enumerate(l)} >>> >>> timeit(a, number=1000000) ... 3.27724504471 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 2 (-20) 9 LOAD_CONST 3 (-2) 12 CALL_FUNCTION 3 15 STORE_FAST 0 (l) 6 18 LOAD_CONST 4 (<code object <dictcomp> at 0x7f35dbb54330, file "/tmp/__pfw_test18_t3.py", line 6>) 21 MAKE_FUNCTION 0 24 LOAD_GLOBAL 1 (enumerate) 27 LOAD_FAST 0 (l) 30 CALL_FUNCTION 1 33 GET_ITER 34 CALL_FUNCTION 1 37 RETURN_VALUE >>>
def a(): l = range(50, -20, -2) d = {} for p, v in enumerate(l): d[p] = v return d >>> >>> timeit(a, number=1000000) ... 3.36143708229 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 2 (-20) 9 LOAD_CONST 3 (-2) 12 CALL_FUNCTION 3 15 STORE_FAST 0 (l) 6 18 BUILD_MAP 0 21 STORE_FAST 1 (d) 7 24 SETUP_LOOP 36 (to 63) 27 LOAD_GLOBAL 1 (enumerate) 30 LOAD_FAST 0 (l) 33 CALL_FUNCTION 1 36 GET_ITER >> 37 FOR_ITER 22 (to 62) 40 UNPACK_SEQUENCE 2 43 STORE_FAST 2 (p) 46 STORE_FAST 3 (v) 8 49 LOAD_FAST 3 (v) 52 LOAD_FAST 1 (d) 55 LOAD_FAST 2 (p) 58 STORE_SUBSCR 59 JUMP_ABSOLUTE 37 >> 62 POP_BLOCK 9 >> 63 LOAD_FAST 1 (d) 66 RETURN_VALUE >>>
def a(): l = range(50, -20, -2) d = {} for p, v in enumerate(l): d.update({p: v}) return d >>> >>> timeit(a, number=1000000) ... 10.0756659508 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 2 (-20) 9 LOAD_CONST 3 (-2) 12 CALL_FUNCTION 3 15 STORE_FAST 0 (l) 6 18 BUILD_MAP 0 21 STORE_FAST 1 (d) 7 24 SETUP_LOOP 46 (to 73) 27 LOAD_GLOBAL 1 (enumerate) 30 LOAD_FAST 0 (l) 33 CALL_FUNCTION 1 36 GET_ITER >> 37 FOR_ITER 32 (to 72) 40 UNPACK_SEQUENCE 2 43 STORE_FAST 2 (p) 46 STORE_FAST 3 (v) 8 49 LOAD_FAST 1 (d) 52 LOAD_ATTR 2 (update) 55 BUILD_MAP 1 58 LOAD_FAST 3 (v) 61 LOAD_FAST 2 (p) 64 STORE_MAP 65 CALL_FUNCTION 1 68 POP_TOP 69 JUMP_ABSOLUTE 37 >> 72 POP_BLOCK 9 >> 73 LOAD_FAST 1 (d) 76 RETURN_VALUE >>>
def a(): a = [] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.207961082458 >>> >>> dis(a) 5 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 0 (bool) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 15 RETURN_VALUE >>>
def a(): a = 1 return bool(a) >>> >>> timeit(a, number=1000000) ... 0.212538957596 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 0 (bool) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 15 RETURN_VALUE >>>
def a(): a = 0 return bool(a) >>> >>> timeit(a, number=1000000) ... 0.215605974197 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 0 (bool) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 15 RETURN_VALUE >>>
def a(): a = True return bool(a) >>> >>> timeit(a, number=1000000) ... 0.222937107086 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 1 (bool) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 15 RETURN_VALUE >>>
def a(): a = [1] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.286062955856 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 BUILD_LIST 1 6 STORE_FAST 0 (a) 6 9 LOAD_GLOBAL 0 (bool) 12 LOAD_FAST 0 (a) 15 CALL_FUNCTION 1 18 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.30051112175 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 BUILD_LIST 4 15 STORE_FAST 0 (a) 6 18 LOAD_GLOBAL 0 (bool) 21 LOAD_FAST 0 (a) 24 CALL_FUNCTION 1 27 RETURN_VALUE >>>
def a(): a = 1 return a != 2 >>> >>> timeit(a, number=1000000) ... 0.118921041489 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 3 (!=) 15 RETURN_VALUE >>>
def a(): a = 1 return True if a != 2 else False >>> >>> timeit(a, number=1000000) ... 0.137470006943 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 3 (!=) 15 POP_JUMP_IF_FALSE 22 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): a = 1 return a != 2 and True or False >>> >>> timeit(a, number=1000000) ... 0.138115882874 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 2 (2) 12 COMPARE_OP 3 (!=) 15 POP_JUMP_IF_FALSE 24 18 LOAD_GLOBAL 0 (True) 21 JUMP_IF_TRUE_OR_POP 27 >> 24 LOAD_GLOBAL 1 (False) >> 27 RETURN_VALUE >>>
def a(): return sum([p+v for p, v in enumerate([1, 2, 3, 4, 5])]) >>> >>> timeit(a, number=1000000) ... 0.853567838669 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 BUILD_LIST 0 6 LOAD_GLOBAL 1 (enumerate) 9 LOAD_CONST 1 (1) 12 LOAD_CONST 2 (2) 15 LOAD_CONST 3 (3) 18 LOAD_CONST 4 (4) 21 LOAD_CONST 5 (5) 24 BUILD_LIST 5 27 CALL_FUNCTION 1 30 GET_ITER >> 31 FOR_ITER 22 (to 56) 34 UNPACK_SEQUENCE 2 37 STORE_FAST 0 (p) 40 STORE_FAST 1 (v) 43 LOAD_FAST 0 (p) 46 LOAD_FAST 1 (v) 49 BINARY_ADD 50 LIST_APPEND 2 53 JUMP_ABSOLUTE 31 >> 56 CALL_FUNCTION 1 59 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] return sum([p+v for p, v in enumerate(a)]) >>> >>> timeit(a, number=1000000) ... 0.878266096115 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 BUILD_LIST 5 18 STORE_FAST 0 (a) 6 21 LOAD_GLOBAL 0 (sum) 24 BUILD_LIST 0 27 LOAD_GLOBAL 1 (enumerate) 30 LOAD_FAST 0 (a) 33 CALL_FUNCTION 1 36 GET_ITER >> 37 FOR_ITER 22 (to 62) 40 UNPACK_SEQUENCE 2 43 STORE_FAST 1 (p) 46 STORE_FAST 2 (v) 49 LOAD_FAST 1 (p) 52 LOAD_FAST 2 (v) 55 BINARY_ADD 56 LIST_APPEND 2 59 JUMP_ABSOLUTE 37 >> 62 CALL_FUNCTION 1 65 RETURN_VALUE >>>
def a(): return sum([p+v for p, v in enumerate(xrange(1, 6))]) >>> >>> timeit(a, number=1000000) ... 1.02528905869 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 BUILD_LIST 0 6 LOAD_GLOBAL 1 (enumerate) 9 LOAD_GLOBAL 2 (xrange) 12 LOAD_CONST 1 (1) 15 LOAD_CONST 2 (6) 18 CALL_FUNCTION 2 21 CALL_FUNCTION 1 24 GET_ITER >> 25 FOR_ITER 22 (to 50) 28 UNPACK_SEQUENCE 2 31 STORE_FAST 0 (p) 34 STORE_FAST 1 (v) 37 LOAD_FAST 0 (p) 40 LOAD_FAST 1 (v) 43 BINARY_ADD 44 LIST_APPEND 2 47 JUMP_ABSOLUTE 25 >> 50 CALL_FUNCTION 1 53 RETURN_VALUE >>>
def a(): a = 1 if a == 1 or a == 2 or a == 3: return True return False >>> >>> timeit(a, number=1000000) ... 0.137489080429 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 1 (1) 12 COMPARE_OP 2 (==) 15 POP_JUMP_IF_TRUE 42 18 LOAD_FAST 0 (a) 21 LOAD_CONST 2 (2) 24 COMPARE_OP 2 (==) 27 POP_JUMP_IF_TRUE 42 30 LOAD_FAST 0 (a) 33 LOAD_CONST 3 (3) 36 COMPARE_OP 2 (==) 39 POP_JUMP_IF_FALSE 46 7 >> 42 LOAD_GLOBAL 0 (True) 45 RETURN_VALUE 8 >> 46 LOAD_GLOBAL 1 (False) 49 RETURN_VALUE >>>
def a(): a = 1 if a in (1, 2, 3): return True return False >>> >>> timeit(a, number=1000000) ... 0.13959312439 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 4 ((1, 2, 3)) 12 COMPARE_OP 6 (in) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_GLOBAL 0 (True) 21 RETURN_VALUE 8 >> 22 LOAD_GLOBAL 1 (False) 25 RETURN_VALUE >>>
def a(): return ''.join(map(str, xrange(10))) >>> >>> timeit(a, number=1000000) ... 1.32986211777 >>> >>> dis(a) 5 0 LOAD_CONST 1 ('') 3 LOAD_ATTR 0 (join) 6 LOAD_GLOBAL 1 (map) 9 LOAD_GLOBAL 2 (str) 12 LOAD_GLOBAL 3 (xrange) 15 LOAD_CONST 2 (10) 18 CALL_FUNCTION 1 21 CALL_FUNCTION 2 24 CALL_FUNCTION 1 27 RETURN_VALUE >>>
def a(): return ''.join(map(str, range(10))) >>> >>> timeit(a, number=1000000) ... 1.35690307617 >>> >>> dis(a) 5 0 LOAD_CONST 1 ('') 3 LOAD_ATTR 0 (join) 6 LOAD_GLOBAL 1 (map) 9 LOAD_GLOBAL 2 (str) 12 LOAD_GLOBAL 3 (range) 15 LOAD_CONST 2 (10) 18 CALL_FUNCTION 1 21 CALL_FUNCTION 2 24 CALL_FUNCTION 1 27 RETURN_VALUE >>>
def a(): r = '' for i in range(10): r = '%s%s' % (r, str(i)) return r >>> >>> timeit(a, number=1000000) ... 2.79830002785 >>> >>> dis(a) 5 0 LOAD_CONST 1 ('') 3 STORE_FAST 0 (r) 6 6 SETUP_LOOP 42 (to 51) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 2 (10) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 28 (to 50) 22 STORE_FAST 1 (i) 7 25 LOAD_CONST 3 ('%s%s') 28 LOAD_FAST 0 (r) 31 LOAD_GLOBAL 1 (str) 34 LOAD_FAST 1 (i) 37 CALL_FUNCTION 1 40 BUILD_TUPLE 2 43 BINARY_MODULO 44 STORE_FAST 0 (r) 47 JUMP_ABSOLUTE 19 >> 50 POP_BLOCK 8 >> 51 LOAD_FAST 0 (r) 54 RETURN_VALUE >>>
def a(): a = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] b = {k: v for x, k, v in a} return b >>> >>> timeit(a, number=1000000) ... 0.765523195267 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 BUILD_LIST 3 12 LOAD_CONST 2 (2) 15 LOAD_CONST 3 (3) 18 LOAD_CONST 4 (4) 21 BUILD_LIST 3 24 LOAD_CONST 4 (4) 27 LOAD_CONST 5 (5) 30 LOAD_CONST 6 (6) 33 BUILD_LIST 3 36 BUILD_LIST 3 39 STORE_FAST 0 (a) 6 42 LOAD_CONST 7 (<code object <dictcomp> at 0x7f69bdfc0330, file "/tmp/__pfw_test24_t3.py", line 6>) 45 MAKE_FUNCTION 0 48 LOAD_FAST 0 (a) 51 GET_ITER 52 CALL_FUNCTION 1 55 STORE_FAST 1 (b) 7 58 LOAD_FAST 1 (b) 61 RETURN_VALUE >>>
def a(): a = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] b = {x[1]: x[2] for x in a} return b >>> >>> timeit(a, number=1000000) ... 0.777931928635 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 BUILD_LIST 3 12 LOAD_CONST 2 (2) 15 LOAD_CONST 3 (3) 18 LOAD_CONST 4 (4) 21 BUILD_LIST 3 24 LOAD_CONST 4 (4) 27 LOAD_CONST 5 (5) 30 LOAD_CONST 6 (6) 33 BUILD_LIST 3 36 BUILD_LIST 3 39 STORE_FAST 0 (a) 6 42 LOAD_CONST 7 (<code object <dictcomp> at 0x7fae2b488330, file "/tmp/__pfw_test24_t1.py", line 6>) 45 MAKE_FUNCTION 0 48 LOAD_FAST 0 (a) 51 GET_ITER 52 CALL_FUNCTION 1 55 STORE_FAST 1 (b) 7 58 LOAD_FAST 1 (b) 61 RETURN_VALUE >>>
def a(): a = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] b = dict((x, y)for w, x, y in a) return b >>> >>> timeit(a, number=1000000) ... 1.3186340332 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 BUILD_LIST 3 12 LOAD_CONST 2 (2) 15 LOAD_CONST 3 (3) 18 LOAD_CONST 4 (4) 21 BUILD_LIST 3 24 LOAD_CONST 4 (4) 27 LOAD_CONST 5 (5) 30 LOAD_CONST 6 (6) 33 BUILD_LIST 3 36 BUILD_LIST 3 39 STORE_FAST 0 (a) 6 42 LOAD_GLOBAL 0 (dict) 45 LOAD_CONST 7 (<code object <genexpr> at 0x7fc2926f5330, file "/tmp/__pfw_test24_t2.py", line 6>) 48 MAKE_FUNCTION 0 51 LOAD_FAST 0 (a) 54 GET_ITER 55 CALL_FUNCTION 1 58 CALL_FUNCTION 1 61 STORE_FAST 1 (b) 7 64 LOAD_FAST 1 (b) 67 RETURN_VALUE >>>
def a(): n = 1 return not n >>> >>> timeit(a, number=1000000) ... 0.120754003525 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (n) 6 6 LOAD_FAST 0 (n) 9 UNARY_NOT 10 RETURN_VALUE >>>
def a(): n = 0 return not n >>> >>> timeit(a, number=1000000) ... 0.122815847397 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (n) 6 6 LOAD_FAST 0 (n) 9 UNARY_NOT 10 RETURN_VALUE >>>
def a(): n = 0 if n: return False else: return True >>> >>> timeit(a, number=1000000) ... 0.132151842117 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (n) 6 6 LOAD_FAST 0 (n) 9 POP_JUMP_IF_FALSE 16 7 12 LOAD_GLOBAL 0 (False) 15 RETURN_VALUE 9 >> 16 LOAD_GLOBAL 1 (True) 19 RETURN_VALUE 20 LOAD_CONST 0 (None) 23 RETURN_VALUE >>>
def a(): n = 1 if n: return False else: return True >>> >>> timeit(a, number=1000000) ... 0.134902954102 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (n) 6 6 LOAD_FAST 0 (n) 9 POP_JUMP_IF_FALSE 16 7 12 LOAD_GLOBAL 0 (False) 15 RETURN_VALUE 9 >> 16 LOAD_GLOBAL 1 (True) 19 RETURN_VALUE 20 LOAD_CONST 0 (None) 23 RETURN_VALUE >>>
def k(x=1, y=1, z=-1): return x * (y - 2 * z) def a(): return k(x=5, y=3) >>> >>> timeit(a, number=1000000) ... 0.289858818054 >>> >>> dis(a) 9 0 LOAD_GLOBAL 0 (k) 3 LOAD_CONST 1 ('x') 6 LOAD_CONST 2 (5) 9 LOAD_CONST 3 ('y') 12 LOAD_CONST 4 (3) 15 CALL_FUNCTION 512 18 RETURN_VALUE >>>
def k(x=1, y=1, z=-1): return x * (y - 2 * z) def a(): return k(**{'x': 5, 'y': 3}) >>> >>> timeit(a, number=1000000) ... 0.394360780716 >>> >>> dis(a) 9 0 LOAD_GLOBAL 0 (k) 3 BUILD_MAP 2 6 LOAD_CONST 1 (5) 9 LOAD_CONST 2 ('x') 12 STORE_MAP 13 LOAD_CONST 3 (3) 16 LOAD_CONST 4 ('y') 19 STORE_MAP 20 CALL_FUNCTION_KW 0 23 RETURN_VALUE >>>
def a(n=25): a, b = 0, 1 for i in range(n): x = a + b a = b b = x return a >>> >>> timeit(a, number=1000000) ... 1.54662799835 >>> >>> dis(a) 5 0 LOAD_CONST 3 ((0, 1)) 3 UNPACK_SEQUENCE 2 6 STORE_FAST 1 (a) 9 STORE_FAST 2 (b) 6 12 SETUP_LOOP 42 (to 57) 15 LOAD_GLOBAL 0 (range) 18 LOAD_FAST 0 (n) 21 CALL_FUNCTION 1 24 GET_ITER >> 25 FOR_ITER 28 (to 56) 28 STORE_FAST 3 (i) 7 31 LOAD_FAST 1 (a) 34 LOAD_FAST 2 (b) 37 BINARY_ADD 38 STORE_FAST 4 (x) 8 41 LOAD_FAST 2 (b) 44 STORE_FAST 1 (a) 9 47 LOAD_FAST 4 (x) 50 STORE_FAST 2 (b) 53 JUMP_ABSOLUTE 25 >> 56 POP_BLOCK 10 >> 57 LOAD_FAST 1 (a) 60 RETURN_VALUE >>>
def a(n=25): a, b = 0, 1 for i in range(n): a, b = b, a + b return a >>> >>> timeit(a, number=1000000) ... 1.65868592262 >>> >>> dis(a) 5 0 LOAD_CONST 3 ((0, 1)) 3 UNPACK_SEQUENCE 2 6 STORE_FAST 1 (a) 9 STORE_FAST 2 (b) 6 12 SETUP_LOOP 37 (to 52) 15 LOAD_GLOBAL 0 (range) 18 LOAD_FAST 0 (n) 21 CALL_FUNCTION 1 24 GET_ITER >> 25 FOR_ITER 23 (to 51) 28 STORE_FAST 3 (i) 7 31 LOAD_FAST 2 (b) 34 LOAD_FAST 1 (a) 37 LOAD_FAST 2 (b) 40 BINARY_ADD 41 ROT_TWO 42 STORE_FAST 1 (a) 45 STORE_FAST 2 (b) 48 JUMP_ABSOLUTE 25 >> 51 POP_BLOCK 8 >> 52 LOAD_FAST 1 (a) 55 RETURN_VALUE >>>
def a(): x = y = z = w = k = 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.245126962662 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 DUP_TOP 4 STORE_FAST 0 (x) 7 DUP_TOP 8 STORE_FAST 1 (y) 11 DUP_TOP 12 STORE_FAST 2 (z) 15 DUP_TOP 16 STORE_FAST 3 (w) 19 STORE_FAST 4 (k) 6 22 LOAD_FAST 0 (x) 25 LOAD_FAST 1 (y) 28 LOAD_FAST 2 (z) 31 LOAD_FAST 3 (w) 34 LOAD_FAST 4 (k) 37 BUILD_TUPLE 5 40 RETURN_VALUE >>>
def a(): x, y, z, w, k = 0, 0, 0, 0, 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.253628015518 >>> >>> dis(a) 5 0 LOAD_CONST 2 ((0, 0, 0, 0, 0)) 3 UNPACK_SEQUENCE 5 6 STORE_FAST 0 (x) 9 STORE_FAST 1 (y) 12 STORE_FAST 2 (z) 15 STORE_FAST 3 (w) 18 STORE_FAST 4 (k) 6 21 LOAD_FAST 0 (x) 24 LOAD_FAST 1 (y) 27 LOAD_FAST 2 (z) 30 LOAD_FAST 3 (w) 33 LOAD_FAST 4 (k) 36 BUILD_TUPLE 5 39 RETURN_VALUE >>>
def a(): x = 0 y = 0 z = 0 w = 0 k = 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.280682086945 >>> >>> dis(a) 5 0 LOAD_CONST 1 (0) 3 STORE_FAST 0 (x) 6 6 LOAD_CONST 1 (0) 9 STORE_FAST 1 (y) 7 12 LOAD_CONST 1 (0) 15 STORE_FAST 2 (z) 8 18 LOAD_CONST 1 (0) 21 STORE_FAST 3 (w) 9 24 LOAD_CONST 1 (0) 27 STORE_FAST 4 (k) 10 30 LOAD_FAST 0 (x) 33 LOAD_FAST 1 (y) 36 LOAD_FAST 2 (z) 39 LOAD_FAST 3 (w) 42 LOAD_FAST 4 (k) 45 BUILD_TUPLE 5 48 RETURN_VALUE >>>
import math def a(): n = 123.123 return math.floor(n) >>> >>> timeit(a, number=1000000) ... 0.189735889435 >>> >>> dis(a) 8 0 LOAD_CONST 1 (123.123) 3 STORE_FAST 0 (n) 9 6 LOAD_GLOBAL 0 (math) 9 LOAD_ATTR 1 (floor) 12 LOAD_FAST 0 (n) 15 CALL_FUNCTION 1 18 RETURN_VALUE >>>
def a(): n = 123.123 return int(n) >>> >>> timeit(a, number=1000000) ... 0.229862928391 >>> >>> dis(a) 5 0 LOAD_CONST 1 (123.123) 3 STORE_FAST 0 (n) 6 6 LOAD_GLOBAL 0 (int) 9 LOAD_FAST 0 (n) 12 CALL_FUNCTION 1 15 RETURN_VALUE >>>
import math def a(): n = 123.123 return math.trunc(n) >>> >>> timeit(a, number=1000000) ... 0.239846944809 >>> >>> dis(a) 8 0 LOAD_CONST 1 (123.123) 3 STORE_FAST 0 (n) 9 6 LOAD_GLOBAL 0 (math) 9 LOAD_ATTR 1 (trunc) 12 LOAD_FAST 0 (n) 15 CALL_FUNCTION 1 18 RETURN_VALUE >>>
def a(): n = 123.123 return n // 1 >>> >>> timeit(a, number=1000000) ... 0.251335859299 >>> >>> dis(a) 5 0 LOAD_CONST 1 (123.123) 3 STORE_FAST 0 (n) 6 6 LOAD_FAST 0 (n) 9 LOAD_CONST 2 (1) 12 BINARY_FLOOR_DIVIDE 13 RETURN_VALUE >>>
def a(): f = lambda *args: args return f('a', 'b') >>> >>> timeit(a, number=1000000) ... 0.228500127792 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7fdf379e0330, file "/tmp/__pfw_test30_t1.py", line 5>) 3 MAKE_FUNCTION 0 6 STORE_FAST 0 (f) 6 9 LOAD_FAST 0 (f) 12 LOAD_CONST 2 ('a') 15 LOAD_CONST 3 ('b') 18 CALL_FUNCTION 2 21 RETURN_VALUE >>>
def a(): f = lambda *args: args return f(*('a', 'b')) >>> >>> timeit(a, number=1000000) ... 0.258279085159 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7fe537efb330, file "/tmp/__pfw_test30_t2.py", line 5>) 3 MAKE_FUNCTION 0 6 STORE_FAST 0 (f) 6 9 LOAD_FAST 0 (f) 12 LOAD_CONST 4 (('a', 'b')) 15 CALL_FUNCTION_VAR 0 18 RETURN_VALUE >>>
def a(): f = lambda *args: args return f(*'ab') >>> >>> timeit(a, number=1000000) ... 0.477759122849 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7f3eda8f1330, file "/tmp/__pfw_test30_t3.py", line 5>) 3 MAKE_FUNCTION 0 6 STORE_FAST 0 (f) 6 9 LOAD_FAST 0 (f) 12 LOAD_CONST 2 ('ab') 15 CALL_FUNCTION_VAR 0 18 RETURN_VALUE >>>
def a(int=int, str=str, range=range): for i in range(500): int(str(i)) number = 100000 >>> >>> timeit(a, number=100000) ... 22.8168179989 >>> >>> dis(a) 5 0 SETUP_LOOP 36 (to 39) 3 LOAD_FAST 2 (range) 6 LOAD_CONST 1 (500) 9 CALL_FUNCTION 1 12 GET_ITER >> 13 FOR_ITER 22 (to 38) 16 STORE_FAST 3 (i) 6 19 LOAD_FAST 0 (int) 22 LOAD_FAST 1 (str) 25 LOAD_FAST 3 (i) 28 CALL_FUNCTION 1 31 CALL_FUNCTION 1 34 POP_TOP 35 JUMP_ABSOLUTE 13 >> 38 POP_BLOCK >> 39 LOAD_CONST 0 (None) 42 RETURN_VALUE >>>
def a(): for i in range(500): int(str(i)) number = 100000 >>> >>> timeit(a, number=100000) ... 24.9031488895 >>> >>> dis(a) 5 0 SETUP_LOOP 36 (to 39) 3 LOAD_GLOBAL 0 (range) 6 LOAD_CONST 1 (500) 9 CALL_FUNCTION 1 12 GET_ITER >> 13 FOR_ITER 22 (to 38) 16 STORE_FAST 0 (i) 6 19 LOAD_GLOBAL 1 (int) 22 LOAD_GLOBAL 2 (str) 25 LOAD_FAST 0 (i) 28 CALL_FUNCTION 1 31 CALL_FUNCTION 1 34 POP_TOP 35 JUMP_ABSOLUTE 13 >> 38 POP_BLOCK >> 39 LOAD_CONST 0 (None) 42 RETURN_VALUE >>>
def a(): D = {} for k in xrange(0, 200): D[k] if k in D else None return D >>> >>> timeit(a, number=1000000) ... 8.00678992271 >>> >>> dis(a) 5 0 BUILD_MAP 0 3 STORE_FAST 0 (D) 6 6 SETUP_LOOP 49 (to 58) 9 LOAD_GLOBAL 0 (xrange) 12 LOAD_CONST 1 (0) 15 LOAD_CONST 2 (200) 18 CALL_FUNCTION 2 21 GET_ITER >> 22 FOR_ITER 32 (to 57) 25 STORE_FAST 1 (k) 7 28 LOAD_FAST 1 (k) 31 LOAD_FAST 0 (D) 34 COMPARE_OP 6 (in) 37 POP_JUMP_IF_FALSE 50 40 LOAD_FAST 0 (D) 43 LOAD_FAST 1 (k) 46 BINARY_SUBSCR 47 JUMP_FORWARD 3 (to 53) >> 50 LOAD_CONST 0 (None) >> 53 POP_TOP 54 JUMP_ABSOLUTE 22 >> 57 POP_BLOCK 8 >> 58 LOAD_FAST 0 (D) 61 RETURN_VALUE >>>
def a(): D = {} for k in xrange(0, 200): D.get(k) return D >>> >>> timeit(a, number=1000000) ... 16.4646399021 >>> >>> dis(a) 5 0 BUILD_MAP 0 3 STORE_FAST 0 (D) 6 6 SETUP_LOOP 36 (to 45) 9 LOAD_GLOBAL 0 (xrange) 12 LOAD_CONST 1 (0) 15 LOAD_CONST 2 (200) 18 CALL_FUNCTION 2 21 GET_ITER >> 22 FOR_ITER 19 (to 44) 25 STORE_FAST 1 (k) 7 28 LOAD_FAST 0 (D) 31 LOAD_ATTR 1 (get) 34 LOAD_FAST 1 (k) 37 CALL_FUNCTION 1 40 POP_TOP 41 JUMP_ABSOLUTE 22 >> 44 POP_BLOCK 8 >> 45 LOAD_FAST 0 (D) 48 RETURN_VALUE >>>