New submission from STINNER Victor: The LOAD_GLOBAL bytecode has a fast-path when globals and builtins have exactly the type 'dict'. It calls the _PyDict_LoadGlobal() function.
I propose to implement a similar optimization for LOAD_NAME, see attached patch. The patch also fixes LOAD_GLOBAL and LOAD_NAME bytecodes when locals, globals or builtins are not exactly the type 'dict'. It clears the KeyError before trying the next PyObject_GetItem(). The patch changes also _PyDict_LoadGlobal() to call PyObject_Hash() if the hash was not computed yet. It might make it a little bit faster. ---------- components: Interpreter Core files: pydict_loadname.patch keywords: patch messages: 254097 nosy: haypo, serhiy.storchaka priority: normal severity: normal status: open title: Optimize LOAD_NAME bytecode type: performance versions: Python 3.6 Added file: http://bugs.python.org/file40950/pydict_loadname.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25557> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com