diff options
| author | Pieter Eendebak <pieter.eendebak@gmail.com> | 2022-05-05 22:52:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-05 22:52:04 +0200 |
| commit | 06f6cc22d79203cbdb1ad43cc141853e24cb120c (patch) | |
| tree | 4efd64c171c99c50fa5f321a54312147876b6b6c /numpy | |
| parent | 7f77205be5303e8bc06036fa29ed1846652d6bdf (diff) | |
| download | numpy-06f6cc22d79203cbdb1ad43cc141853e24cb120c.tar.gz | |
PERF: Statically allocate unicode strings of memhandler (#21450)
* PERF Statically allocate unicode strings
* Update numpy/core/src/multiarray/multiarraymodule.c
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
Diffstat (limited to 'numpy')
| -rw-r--r-- | numpy/core/src/multiarray/alloc.c | 2 | ||||
| -rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.c | 5 | ||||
| -rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/alloc.c b/numpy/core/src/multiarray/alloc.c index 94a7daa83..759a02aeb 100644 --- a/numpy/core/src/multiarray/alloc.c +++ b/numpy/core/src/multiarray/alloc.c @@ -576,7 +576,7 @@ PyDataMem_GetHandler() if (p == NULL) { return NULL; } - handler = PyDict_GetItemString(p, "current_allocator"); + handler = PyDict_GetItem(p, npy_ma_str_current_allocator); if (handler == NULL) { handler = PyCapsule_New(&default_handler, "mem_handler", NULL); if (handler == NULL) { diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c index 0ce092780..5e51bcaa6 100644 --- a/numpy/core/src/multiarray/multiarraymodule.c +++ b/numpy/core/src/multiarray/multiarraymodule.c @@ -4665,6 +4665,7 @@ set_flaginfo(PyObject *d) return; } +NPY_VISIBILITY_HIDDEN PyObject * npy_ma_str_current_allocator = NULL; NPY_VISIBILITY_HIDDEN PyObject * npy_ma_str_array = NULL; NPY_VISIBILITY_HIDDEN PyObject * npy_ma_str_array_function = NULL; NPY_VISIBILITY_HIDDEN PyObject * npy_ma_str_array_struct = NULL; @@ -4681,6 +4682,10 @@ NPY_VISIBILITY_HIDDEN PyObject * npy_ma_str_numpy = NULL; static int intern_strings(void) { + npy_ma_str_current_allocator = PyUnicode_InternFromString("current_allocator"); + if (npy_ma_str_current_allocator == NULL) { + return -1; + } npy_ma_str_array = PyUnicode_InternFromString("__array__"); if (npy_ma_str_array == NULL) { return -1; diff --git a/numpy/core/src/multiarray/multiarraymodule.h b/numpy/core/src/multiarray/multiarraymodule.h index 70205dfd2..809736cd2 100644 --- a/numpy/core/src/multiarray/multiarraymodule.h +++ b/numpy/core/src/multiarray/multiarraymodule.h @@ -1,6 +1,7 @@ #ifndef NUMPY_CORE_SRC_MULTIARRAY_MULTIARRAYMODULE_H_ #define NUMPY_CORE_SRC_MULTIARRAY_MULTIARRAYMODULE_H_ +NPY_VISIBILITY_HIDDEN extern PyObject * npy_ma_str_current_allocator; NPY_VISIBILITY_HIDDEN extern PyObject * npy_ma_str_array; NPY_VISIBILITY_HIDDEN extern PyObject * npy_ma_str_array_function; NPY_VISIBILITY_HIDDEN extern PyObject * npy_ma_str_array_struct; |
