>>> import sys >>> import platform >>> platform.system() 'Linux' >>> platform.release() '3.15.7-1-aufs_friendly' >>> sys.version '2.7.9 (default, Dec 11 2014, 04:42:00) [GCC 4.9.2]' >>> from timeit import timeit >>> from dis import dis >>>
def a(): d = {} return d >>> >>> timeit(a, number=1000000) ... 0.12117099762 >>> >>> 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.223812103271 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (dict) 3 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 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.920419931412 >>> >>> 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 (0 positional, 0 keyword pair) 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) ... 1.22686982155 >>> >>> 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 (1 positional, 0 keyword pair) 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.287055969238 >>> >>> 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.328858137131 >>> >>> 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.283309221268 >>> >>> dis(a) 5 0 LOAD_CONST 9 ((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_CONST 7 (True) 87 RETURN_VALUE 8 >> 88 LOAD_CONST 8 (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.313526153564 >>> >>> dis(a) 5 0 LOAD_CONST 9 ((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_CONST 7 (True) 88 RETURN_VALUE 8 >> 89 LOAD_CONST 8 (False) 92 RETURN_VALUE >>>
def a(): a = True if a: return True return False >>> >>> timeit(a, number=1000000) ... 0.144029140472 >>> >>> dis(a) 5 0 LOAD_CONST 1 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 POP_JUMP_IF_FALSE 16 7 12 LOAD_CONST 1 (True) 15 RETURN_VALUE 8 >> 16 LOAD_CONST 2 (False) 19 RETURN_VALUE >>>
def a(): a = True if a is True: return True return False >>> >>> timeit(a, number=1000000) ... 0.184409141541 >>> >>> dis(a) 5 0 LOAD_CONST 1 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 1 (True) 12 COMPARE_OP 8 (is) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_CONST 1 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 2 (False) 25 RETURN_VALUE >>>
def a(): a = True if a == True: return True return False >>> >>> timeit(a, number=1000000) ... 0.202383041382 >>> >>> dis(a) 5 0 LOAD_CONST 1 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 1 (True) 12 COMPARE_OP 2 (==) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_CONST 1 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 2 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if a != 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.165642023087 >>> >>> 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_CONST 3 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 4 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if a is not 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.166152000427 >>> >>> 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_CONST 3 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 4 (False) 25 RETURN_VALUE >>>
def a(): a = 1 if not a is 2: return True return False >>> >>> timeit(a, number=1000000) ... 0.170970916748 >>> >>> 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_CONST 3 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 4 (False) 25 RETURN_VALUE >>>
def a(): a = [] if not a: return True return False >>> >>> timeit(a, number=1000000) ... 0.159525871277 >>> >>> 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_CONST 1 (True) 15 RETURN_VALUE 8 >> 16 LOAD_CONST 2 (False) 19 RETURN_VALUE >>>
def a(): a = [] if a: return False return True >>> >>> timeit(a, number=1000000) ... 0.160557985306 >>> >>> 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_CONST 1 (False) 15 RETURN_VALUE 8 >> 16 LOAD_CONST 2 (True) 19 RETURN_VALUE >>>
def a(): a = [] if len(a) <= 0: return True return False >>> >>> timeit(a, number=1000000) ... 0.183171987534 >>> >>> 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 (1 positional, 0 keyword pair) 15 LOAD_CONST 1 (0) 18 COMPARE_OP 1 (<=) 21 POP_JUMP_IF_FALSE 28 7 24 LOAD_CONST 2 (True) 27 RETURN_VALUE 8 >> 28 LOAD_CONST 3 (False) 31 RETURN_VALUE >>>
def a(): a = [] if a == []: return True return False >>> >>> timeit(a, number=1000000) ... 0.224298000336 >>> >>> 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_CONST 1 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 2 (False) 25 RETURN_VALUE >>>
def a(): a = object() if a: return True return False >>> >>> timeit(a, number=1000000) ... 0.206521987915 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 POP_JUMP_IF_FALSE 19 7 15 LOAD_CONST 1 (True) 18 RETURN_VALUE 8 >> 19 LOAD_CONST 2 (False) 22 RETURN_VALUE >>>
def a(): a = object() if a is None: return False return True >>> >>> timeit(a, number=1000000) ... 0.214263916016 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 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_CONST 1 (False) 24 RETURN_VALUE 8 >> 25 LOAD_CONST 2 (True) 28 RETURN_VALUE >>>
def a(): a = object() if a is not None: return True return False >>> >>> timeit(a, number=1000000) ... 0.214513063431 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 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_CONST 1 (True) 24 RETURN_VALUE 8 >> 25 LOAD_CONST 2 (False) 28 RETURN_VALUE >>>
def a(): a = object() if not a: return False return True >>> >>> timeit(a, number=1000000) ... 0.2481341362 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (object) 3 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 6 STORE_FAST 0 (a) 6 9 LOAD_FAST 0 (a) 12 POP_JUMP_IF_TRUE 19 7 15 LOAD_CONST 1 (False) 18 RETURN_VALUE 8 >> 19 LOAD_CONST 2 (True) 22 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) ... 1.04723882675 >>> >>> 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 (1 positional, 0 keyword pair) 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) ... 1.22957205772 >>> >>> 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 (1 positional, 0 keyword pair) 42 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 2.59105205536 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 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) ... 3.82146906853 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 40 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 60 RETURN_VALUE >>>
def a(): a = 5 b = 2 c = 3 return "%s" % (a*(b+c)) >>> >>> timeit(a, number=1000000) ... 0.316877841949 >>> >>> 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.334637880325 >>> >>> 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 (1 positional, 0 keyword pair) 35 RETURN_VALUE >>>
def a(): a = 5 b = 2 c = 3 return "%d" % (a*(b+c)) >>> >>> timeit(a, number=1000000) ... 0.677181005478 >>> >>> 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.240168094635 >>> >>> 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 (1 positional, 0 keyword pair) 30 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] return a.__len__() >>> >>> timeit(a, number=1000000) ... 0.327343940735 >>> >>> 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 (0 positional, 0 keyword pair) 30 RETURN_VALUE >>>
def a(): a = 1 b = 2 c = 2 d = 5 return (a+b+c)*d >>> >>> timeit(a, number=1000000) ... 0.234872102737 >>> >>> 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.576534986496 >>> >>> 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 (1 positional, 0 keyword pair) 42 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 45 LOAD_ATTR 1 (__mul__) 48 LOAD_FAST 3 (d) 51 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 2.96158599854 >>> >>> dis(a) 17 0 LOAD_GLOBAL 0 (Z) 3 LOAD_CONST 1 (5) 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 9 STORE_FAST 0 (a) 18 12 LOAD_GLOBAL 0 (Z) 15 LOAD_CONST 2 (2) 18 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 21 STORE_FAST 1 (b) 19 24 LOAD_GLOBAL 0 (Z) 27 LOAD_CONST 3 (3) 30 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 48 LOAD_ATTR 2 (__mul__) 51 LOAD_FAST 0 (a) 54 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 4.80117797852 >>> >>> dis(a) 17 0 LOAD_GLOBAL 0 (Z) 3 LOAD_CONST 1 (5) 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 9 STORE_FAST 0 (a) 18 12 LOAD_GLOBAL 0 (Z) 15 LOAD_CONST 2 (2) 18 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 21 STORE_FAST 1 (b) 19 24 LOAD_GLOBAL 0 (Z) 27 LOAD_CONST 3 (3) 30 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 235.95063591 >>> >>> 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 (1 positional, 0 keyword pair) 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) ... 294.642810106 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 LOAD_CONST 1 (<code object <genexpr> at 0x7f8b355bd420, file "/tmp/__pfw_test15_t2.py", line 5>) 6 LOAD_CONST 2 ('a.<locals>.<genexpr>') 9 MAKE_FUNCTION 0 12 LOAD_GLOBAL 1 (range) 15 LOAD_CONST 3 (50000) 18 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 21 GET_ITER 22 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 25 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 28 RETURN_VALUE >>>
def a(): return [i for i in range(1000)] number = 100000 >>> >>> timeit(a, number=100000) ... 3.63279008865 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <listcomp> at 0x7fd5a2880420, file "/tmp/__pfw_test16_t2.py", line 5>) 3 LOAD_CONST 2 ('a.<locals>.<listcomp>') 6 MAKE_FUNCTION 0 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 3 (1000) 15 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 18 GET_ITER 19 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 22 RETURN_VALUE >>>
def a(): l = [] for i in range(1000): l.append(i) return l number = 100000 >>> >>> timeit(a, number=100000) ... 12.3200118542 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 37 POP_TOP 38 JUMP_ABSOLUTE 19 >> 41 POP_BLOCK 8 >> 42 LOAD_FAST 0 (l) 45 RETURN_VALUE >>>
def a(): d = {} for i in range(100): d[str(i)] = i*2 return d >>> >>> timeit(a, number=1000000) ... 28.9604780674 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 44 STORE_SUBSCR 45 JUMP_ABSOLUTE 19 >> 48 POP_BLOCK 8 >> 49 LOAD_FAST 0 (d) 52 RETURN_VALUE >>>
def a(): return {str(i): i*2 for i in range(100)} >>> >>> timeit(a, number=1000000) ... 29.0226788521 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <dictcomp> at 0x7f3ed6050420, file "/tmp/__pfw_test17_t3.py", line 5>) 3 LOAD_CONST 2 ('a.<locals>.<dictcomp>') 6 MAKE_FUNCTION 0 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 3 (100) 15 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 18 GET_ITER 19 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 22 RETURN_VALUE >>>
def a(): d = {} for i in range(100): d.update({str(i): i*2}) return d >>> >>> timeit(a, number=1000000) ... 73.8836421967 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 50 STORE_MAP 51 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) d = {} for p, v in enumerate(l): d[p] = v return d >>> >>> timeit(a, number=1000000) ... 4.75306510925 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 4 (-20) 9 LOAD_CONST 5 (-2) 12 CALL_FUNCTION 3 (3 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 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) return {p: v for p, v in enumerate(l)} >>> >>> timeit(a, number=1000000) ... 5.05992102623 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 6 (-20) 9 LOAD_CONST 7 (-2) 12 CALL_FUNCTION 3 (3 positional, 0 keyword pair) 15 STORE_FAST 0 (l) 6 18 LOAD_CONST 4 (<code object <dictcomp> at 0x7f7a2f8ec420, file "/tmp/__pfw_test18_t3.py", line 6>) 21 LOAD_CONST 5 ('a.<locals>.<dictcomp>') 24 MAKE_FUNCTION 0 27 LOAD_GLOBAL 1 (enumerate) 30 LOAD_FAST 0 (l) 33 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 36 GET_ITER 37 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 40 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) ... 19.88803792 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (range) 3 LOAD_CONST 1 (50) 6 LOAD_CONST 4 (-20) 9 LOAD_CONST 5 (-2) 12 CALL_FUNCTION 3 (3 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 68 POP_TOP 69 JUMP_ABSOLUTE 37 >> 72 POP_BLOCK 9 >> 73 LOAD_FAST 1 (d) 76 RETURN_VALUE >>>
def a(): a = 0 return bool(a) >>> >>> timeit(a, number=1000000) ... 0.228487968445 >>> >>> 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 (1 positional, 0 keyword pair) 15 RETURN_VALUE >>>
def a(): a = [] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.230648994446 >>> >>> 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 (1 positional, 0 keyword pair) 15 RETURN_VALUE >>>
def a(): a = 1 return bool(a) >>> >>> timeit(a, number=1000000) ... 0.230710029602 >>> >>> 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 (1 positional, 0 keyword pair) 15 RETURN_VALUE >>>
def a(): a = True return bool(a) >>> >>> timeit(a, number=1000000) ... 0.253918886185 >>> >>> dis(a) 5 0 LOAD_CONST 1 (True) 3 STORE_FAST 0 (a) 6 6 LOAD_GLOBAL 0 (bool) 9 LOAD_FAST 0 (a) 12 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 15 RETURN_VALUE >>>
def a(): a = [1] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.313113927841 >>> >>> 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 (1 positional, 0 keyword pair) 18 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4] return bool(a) >>> >>> timeit(a, number=1000000) ... 0.322363138199 >>> >>> 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 (1 positional, 0 keyword pair) 27 RETURN_VALUE >>>
def a(): a = 1 return a != 2 >>> >>> timeit(a, number=1000000) ... 0.151919841766 >>> >>> 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 a != 2 and True or False >>> >>> timeit(a, number=1000000) ... 0.183768987656 >>> >>> 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_CONST 3 (True) 21 JUMP_IF_TRUE_OR_POP 27 >> 24 LOAD_CONST 4 (False) >> 27 RETURN_VALUE >>>
def a(): a = 1 return True if a != 2 else False >>> >>> timeit(a, number=1000000) ... 0.189638137817 >>> >>> 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_CONST 3 (True) 21 RETURN_VALUE >> 22 LOAD_CONST 4 (False) 25 RETURN_VALUE >>>
def a(): a = [1, 2, 3, 4, 5] return sum([p+v for p, v in enumerate(a)]) >>> >>> timeit(a, number=1000000) ... 1.14292812347 >>> >>> 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 LOAD_CONST 6 (<code object <listcomp> at 0x7fb092989420, file "/tmp/__pfw_test21_t1.py", line 6>) 27 LOAD_CONST 7 ('a.<locals>.<listcomp>') 30 MAKE_FUNCTION 0 33 LOAD_GLOBAL 1 (enumerate) 36 LOAD_FAST 0 (a) 39 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 42 GET_ITER 43 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 46 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 49 RETURN_VALUE >>>
def a(): return sum([p+v for p, v in enumerate([1, 2, 3, 4, 5])]) >>> >>> timeit(a, number=1000000) ... 1.16426682472 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 LOAD_CONST 1 (<code object <listcomp> at 0x7f894e7ba420, file "/tmp/__pfw_test21_t2.py", line 5>) 6 LOAD_CONST 2 ('a.<locals>.<listcomp>') 9 MAKE_FUNCTION 0 12 LOAD_GLOBAL 1 (enumerate) 15 LOAD_CONST 3 (1) 18 LOAD_CONST 4 (2) 21 LOAD_CONST 5 (3) 24 LOAD_CONST 6 (4) 27 LOAD_CONST 7 (5) 30 BUILD_LIST 5 33 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 36 GET_ITER 37 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 40 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 43 RETURN_VALUE >>>
def a(): return sum([p+v for p, v in enumerate(xrange(1, 6))]) >>> >>> timeit(a, number=1000000) ... 1.24158906937 >>> >>> dis(a) 5 0 LOAD_GLOBAL 0 (sum) 3 LOAD_CONST 1 (<code object <listcomp> at 0x7f681efe5420, file "/tmp/__pfw_test21_t3.py", line 5>) 6 LOAD_CONST 2 ('a.<locals>.<listcomp>') 9 MAKE_FUNCTION 0 12 LOAD_GLOBAL 1 (enumerate) 15 LOAD_GLOBAL 2 (xrange) 18 LOAD_CONST 3 (1) 21 LOAD_CONST 4 (6) 24 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 27 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 30 GET_ITER 31 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 34 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 37 RETURN_VALUE >>>
def a(): a = 1 if a == 1 or a == 2 or a == 3: return True return False >>> >>> timeit(a, number=1000000) ... 0.161720991135 >>> >>> 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_CONST 4 (True) 45 RETURN_VALUE 8 >> 46 LOAD_CONST 5 (False) 49 RETURN_VALUE >>>
def a(): a = 1 if a in (1, 2, 3): return True return False >>> >>> timeit(a, number=1000000) ... 0.189331054688 >>> >>> dis(a) 5 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (a) 6 6 LOAD_FAST 0 (a) 9 LOAD_CONST 6 ((1, 2, 3)) 12 COMPARE_OP 6 (in) 15 POP_JUMP_IF_FALSE 22 7 18 LOAD_CONST 4 (True) 21 RETURN_VALUE 8 >> 22 LOAD_CONST 5 (False) 25 RETURN_VALUE >>>
def a(): return ''.join(map(str, xrange(10))) >>> >>> timeit(a, number=1000000) ... 1.98753595352 >>> >>> 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 (1 positional, 0 keyword pair) 21 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 24 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 27 RETURN_VALUE >>>
def a(): return ''.join(map(str, range(10))) >>> >>> timeit(a, number=1000000) ... 2.05258488655 >>> >>> 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 (1 positional, 0 keyword pair) 21 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 24 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 27 RETURN_VALUE >>>
def a(): r = '' for i in range(10): r = '%s%s' % (r, str(i)) return r >>> >>> timeit(a, number=1000000) ... 3.97667503357 >>> >>> 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 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 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) ... 1.02242708206 >>> >>> 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 0x7fb89e06e420, file "/tmp/__pfw_test24_t3.py", line 6>) 45 LOAD_CONST 8 ('a.<locals>.<dictcomp>') 48 MAKE_FUNCTION 0 51 LOAD_FAST 0 (a) 54 GET_ITER 55 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 58 STORE_FAST 1 (b) 7 61 LOAD_FAST 1 (b) 64 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) ... 1.05519008636 >>> >>> 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 0x7f7d6bdd6420, file "/tmp/__pfw_test24_t1.py", line 6>) 45 LOAD_CONST 8 ('a.<locals>.<dictcomp>') 48 MAKE_FUNCTION 0 51 LOAD_FAST 0 (a) 54 GET_ITER 55 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 58 STORE_FAST 1 (b) 7 61 LOAD_FAST 1 (b) 64 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.86678385735 >>> >>> 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 0x7f41b7a27420, file "/tmp/__pfw_test24_t2.py", line 6>) 48 LOAD_CONST 8 ('a.<locals>.<genexpr>') 51 MAKE_FUNCTION 0 54 LOAD_FAST 0 (a) 57 GET_ITER 58 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 61 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 64 STORE_FAST 1 (b) 7 67 LOAD_FAST 1 (b) 70 RETURN_VALUE >>>
def a(): n = 0 return not n >>> >>> timeit(a, number=1000000) ... 0.108924865723 >>> >>> 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 = 1 return not n >>> >>> timeit(a, number=1000000) ... 0.122176885605 >>> >>> 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 if n: return False else: return True >>> >>> timeit(a, number=1000000) ... 0.159090042114 >>> >>> 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_CONST 2 (False) 15 RETURN_VALUE 9 >> 16 LOAD_CONST 3 (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.162801980972 >>> >>> 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_CONST 2 (False) 15 RETURN_VALUE 9 >> 16 LOAD_CONST 3 (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.386114835739 >>> >>> 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 (0 positional, 2 keyword pair) 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.598258018494 >>> >>> 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 (0 positional, 0 keyword pair) 23 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) ... 2.51424002647 >>> >>> 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 (1 positional, 0 keyword pair) 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(n=25): a, b = 0, 1 for i in range(n): x = a + b a = b b = x return a >>> >>> timeit(a, number=1000000) ... 3.02163410187 >>> >>> 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 (1 positional, 0 keyword pair) 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(): x = y = z = w = k = 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.247763156891 >>> >>> 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 = 0 y = 0 z = 0 w = 0 k = 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.249707937241 >>> >>> 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 >>>
def a(): x, y, z, w, k = 0, 0, 0, 0, 0 return x, y, z, w, k >>> >>> timeit(a, number=1000000) ... 0.253453016281 >>> >>> 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 >>>
import math def a(): n = 123.123 return math.floor(n) >>> >>> timeit(a, number=1000000) ... 0.195842981339 >>> >>> 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 (1 positional, 0 keyword pair) 18 RETURN_VALUE >>>
def a(): n = 123.123 return int(n) >>> >>> timeit(a, number=1000000) ... 0.248912096024 >>> >>> 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 (1 positional, 0 keyword pair) 15 RETURN_VALUE >>>
import math def a(): n = 123.123 return math.trunc(n) >>> >>> timeit(a, number=1000000) ... 0.299951076508 >>> >>> 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 (1 positional, 0 keyword pair) 18 RETURN_VALUE >>>
def a(): n = 123.123 return n // 1 >>> >>> timeit(a, number=1000000) ... 0.311570882797 >>> >>> 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.308448076248 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7f3f3f139420, file "/tmp/__pfw_test30_t1.py", line 5>) 3 LOAD_CONST 2 ('a.<locals>.<lambda>') 6 MAKE_FUNCTION 0 9 STORE_FAST 0 (f) 6 12 LOAD_FAST 0 (f) 15 LOAD_CONST 3 ('a') 18 LOAD_CONST 4 ('b') 21 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 24 RETURN_VALUE >>>
def a(): f = lambda *args: args return f(*('a', 'b')) >>> >>> timeit(a, number=1000000) ... 0.324676990509 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7f959b45e420, file "/tmp/__pfw_test30_t2.py", line 5>) 3 LOAD_CONST 2 ('a.<locals>.<lambda>') 6 MAKE_FUNCTION 0 9 STORE_FAST 0 (f) 6 12 LOAD_FAST 0 (f) 15 LOAD_CONST 5 (('a', 'b')) 18 CALL_FUNCTION_VAR 0 (0 positional, 0 keyword pair) 21 RETURN_VALUE >>>
def a(): f = lambda *args: args return f(*'ab') >>> >>> timeit(a, number=1000000) ... 0.584281921387 >>> >>> dis(a) 5 0 LOAD_CONST 1 (<code object <lambda> at 0x7f1a58b10420, file "/tmp/__pfw_test30_t3.py", line 5>) 3 LOAD_CONST 2 ('a.<locals>.<lambda>') 6 MAKE_FUNCTION 0 9 STORE_FAST 0 (f) 6 12 LOAD_FAST 0 (f) 15 LOAD_CONST 3 ('ab') 18 CALL_FUNCTION_VAR 0 (0 positional, 0 keyword pair) 21 RETURN_VALUE >>>
def a(int=int, str=str, range=range): for i in range(500): int(str(i)) number = 100000 >>> >>> timeit(a, number=100000) ... 31.9951808453 >>> >>> dis(a) 5 0 SETUP_LOOP 36 (to 39) 3 LOAD_FAST 2 (range) 6 LOAD_CONST 1 (500) 9 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 31 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 34.025177002 >>> >>> dis(a) 5 0 SETUP_LOOP 36 (to 39) 3 LOAD_GLOBAL 0 (range) 6 LOAD_CONST 1 (500) 9 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 31 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 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) ... 13.5737528801 >>> >>> 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 (2 positional, 0 keyword pair) 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) ... 38.3689742088 >>> >>> 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 (2 positional, 0 keyword pair) 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 (1 positional, 0 keyword pair) 40 POP_TOP 41 JUMP_ABSOLUTE 22 >> 44 POP_BLOCK 8 >> 45 LOAD_FAST 0 (D) 48 RETURN_VALUE >>>