diff options
| author | Raymond Hettinger <python@rcn.com> | 2007-12-18 18:26:18 (GMT) | 
|---|---|---|
| committer | Raymond Hettinger <python@rcn.com> | 2007-12-18 18:26:18 (GMT) | 
| commit | effde12f5fe41bab9c27269bd77237200d953afd (patch) | |
| tree | b2eeab007ae8d329366ca815e1f1b3b3072415e9 /Lib/opcode.py | |
| parent | eb103b357780ecc9395cc680ebd4f5d436bbe888 (diff) | |
| download | cpython-effde12f5fe41bab9c27269bd77237200d953afd.zip cpython-effde12f5fe41bab9c27269bd77237200d953afd.tar.gz cpython-effde12f5fe41bab9c27269bd77237200d953afd.tar.bz2  | |
Speed-up dictionary constructor by about 10%.
New opcode, STORE_MAP saves the compiler from awkward stack manipulations
and specializes for dicts using PyDict_SetItem instead of PyObject_SetItem.
Old disassembly:
              0 BUILD_MAP                0
              3 DUP_TOP
              4 LOAD_CONST               1 (1)
              7 ROT_TWO
              8 LOAD_CONST               2 ('x')
             11 STORE_SUBSCR
             12 DUP_TOP
             13 LOAD_CONST               3 (2)
             16 ROT_TWO
             17 LOAD_CONST               4 ('y')
             20 STORE_SUBSCR
New disassembly:
              0 BUILD_MAP                0
              3 LOAD_CONST               1 (1)
              6 LOAD_CONST               2 ('x')
              9 STORE_MAP
             10 LOAD_CONST               3 (2)
             13 LOAD_CONST               4 ('y')
             16 STORE_MAP
Diffstat (limited to 'Lib/opcode.py')
| -rw-r--r-- | Lib/opcode.py | 1 | 
1 files changed, 1 insertions, 0 deletions
diff --git a/Lib/opcode.py b/Lib/opcode.py index 095ca42..c3457d0 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -85,6 +85,7 @@ def_op('DELETE_SLICE+1', 51)  def_op('DELETE_SLICE+2', 52)  def_op('DELETE_SLICE+3', 53) +def_op('STORE_MAP', 54)  def_op('INPLACE_ADD', 55)  def_op('INPLACE_SUBTRACT', 56)  def_op('INPLACE_MULTIPLY', 57)  | 
