summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorwangxiang-hz <34048878+wangxiang-hz@users.noreply.github.com>2023-03-11 11:11:37 (GMT)
committerGitHub <noreply@github.com>2023-03-11 11:11:37 (GMT)
commitaa0a73d1bc53dcb6348a869df1e775138991e561 (patch)
tree66ad74f8d199076d88e5150b999895cd15807560 /Include
parent5ffdaf748d98da6065158534720f1996a45a0072 (diff)
downloadcpython-aa0a73d1bc53dcb6348a869df1e775138991e561.zip
cpython-aa0a73d1bc53dcb6348a869df1e775138991e561.tar.gz
cpython-aa0a73d1bc53dcb6348a869df1e775138991e561.tar.bz2
gh-102213: Optimize the performance of `__getattr__` (GH-102248)
When __getattr__ is defined, python with try to find an attribute using _PyObject_GenericGetAttrWithDict find nothing is reasonable so we don't need an exception, it will hurt performance.
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_object.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h
index e15685f..318e6f3 100644
--- a/Include/internal/pycore_object.h
+++ b/Include/internal/pycore_object.h
@@ -370,6 +370,7 @@ extern void _PyObject_FreeInstanceAttributes(PyObject *obj);
extern int _PyObject_IsInstanceDictEmpty(PyObject *);
extern int _PyType_HasSubclasses(PyTypeObject *);
extern PyObject* _PyType_GetSubclasses(PyTypeObject *);
+extern PyObject* _PyObject_GenericTryGetAttr(PyObject *, PyObject *);
// Access macro to the members which are floating "behind" the object
static inline PyMemberDef* _PyHeapType_GET_MEMBERS(PyHeapTypeObject *etype) {