summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorPieter Eendebak <pieter.eendebak@gmail.com>2022-05-05 22:52:04 +0200
committerGitHub <noreply@github.com>2022-05-05 22:52:04 +0200
commit06f6cc22d79203cbdb1ad43cc141853e24cb120c (patch)
tree4efd64c171c99c50fa5f321a54312147876b6b6c /numpy
parent7f77205be5303e8bc06036fa29ed1846652d6bdf (diff)
downloadnumpy-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.c2
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.c5
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.h1
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;