From 867019073c90890776f49c1962409aac9be60898 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 1 Apr 2024 22:06:07 +0200 Subject: [PATCH 1/3] Improve performance of startswith, endswith for strings and bytes --- Objects/stringlib/find.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Objects/stringlib/find.h b/Objects/stringlib/find.h index 509b9297396be8..213b8268013462 100644 --- a/Objects/stringlib/find.h +++ b/Objects/stringlib/find.h @@ -91,6 +91,15 @@ STRINGLIB(parse_args_finds)(const char * function_name, PyObject *args, Py_ssize_t tmp_start = 0; Py_ssize_t tmp_end = PY_SSIZE_T_MAX; PyObject *obj_start=Py_None, *obj_end=Py_None; + + if (PyTuple_GET_SIZE(args) == 1) { + // fast path + *start = tmp_start; + *end = tmp_end; + *subobj = Py_NewRef(PyTuple_GET_ITEM(args, 0)); + return 1; + } + char format[FORMAT_BUFFER_SIZE] = "O|OO:"; size_t len = strlen(format); From dba79adbefbb004937923ce4af4cea5c06a03f8c Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 1 Apr 2024 22:47:14 +0200 Subject: [PATCH 2/3] fix refleak --- Objects/stringlib/find.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/stringlib/find.h b/Objects/stringlib/find.h index 213b8268013462..60d13ab54415eb 100644 --- a/Objects/stringlib/find.h +++ b/Objects/stringlib/find.h @@ -96,7 +96,7 @@ STRINGLIB(parse_args_finds)(const char * function_name, PyObject *args, // fast path *start = tmp_start; *end = tmp_end; - *subobj = Py_NewRef(PyTuple_GET_ITEM(args, 0)); + *subobj = PyTuple_GET_ITEM(args, 0); return 1; } From f252769f0bc1e8b7a4d4f7a6b5ec24a575b93c4a Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:15:38 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2024-04-01-21-15-35.gh-issue-117431.UBT4zj.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2024-04-01-21-15-35.gh-issue-117431.UBT4zj.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-04-01-21-15-35.gh-issue-117431.UBT4zj.rst b/Misc/NEWS.d/next/Core and Builtins/2024-04-01-21-15-35.gh-issue-117431.UBT4zj.rst new file mode 100644 index 00000000000000..3c862000164f6a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2024-04-01-21-15-35.gh-issue-117431.UBT4zj.rst @@ -0,0 +1 @@ +Improve performance of startswith, endswith, count and find methods for strings and bytes.