OPT-10 Precompute the hashes for LOAD_NAME and LOAD_GLOBAL dictionary lookups#


Python has two opcodes for variables which are not defined in the scope of the local function/frame, LOAD_GLOBAL and LOAD_NAME.

Both opcodes will do a lookup of the variable name. The frame globals, or frame locals attributes are normally dictionaries, so the name will be hashed _every_ time it’s called.


The hashes for variable names are precomputed and emitted along with the opcode calls, a shortcut function is used _PyDict_GetItem_KnownHash to bypass the calculation of the hash each time.


  • Calling builtins is faster

  • Reading out of scope variables is faster




This optimization is enabled at level 1 by default. See Optimizations for help on changing runtime optimization settings.