Skip to content

gh-119396: Optimize unicode_decode_utf8_writer() - #119957

Merged
vstinner merged 1 commit into
python:mainfrom
vstinner:ascii_decode
Jun 3, 2024
Merged

gh-119396: Optimize unicode_decode_utf8_writer()#119957
vstinner merged 1 commit into
python:mainfrom
vstinner:ascii_decode

Conversation

@vstinner

@vstinnervstinner commented Jun 2, 2024

Copy link
Copy Markdown
Member

Take the ascii_decode() fast-path even if dest is not aligned on size_t bytes.

Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
@vstinner

Copy link
Copy Markdown
MemberAuthor

Benchmark (C part, _testcapimodule.c):

staticPyObject*bench(PyObject*Py_UNUSED(module), PyObject*args)
{
constchar*str;
Py_ssize_tloops;
if (!PyArg_ParseTuple(args, "ny", &loops, &str)) {
returnNULL;
}
PyTime_tt1, t2;
(void)PyTime_PerfCounterRaw(&t1);
for (Py_ssize_ti=0; i<loops; i++) {
PyObject*obj=PyUnicode_FromFormat("=%s", str);
if (obj==NULL) {
returnNULL;
}
Py_DECREF(obj);
}
(void)PyTime_PerfCounterRaw(&t2);
returnPyFloat_FromDouble(PyTime_AsSecondsDouble(t2-t1));
}

Benchmark (Python part):

importpyperfimport_testcapirunner=pyperf.Runner()
arg=b'x'*10runner.bench_time_func("FromFormat('x'*10)", _testcapi.bench, arg)
arg=b'x'*1_000runner.bench_time_func("FromFormat('x'*1_000)", _testcapi.bench, arg)

Result:

+-----------------------+---------+-----------------------+
| Benchmark | ref | change |
+=======================+=========+=======================+
| FromFormat('x'*10) | 75.9 ns | 68.7 ns: 1.11x faster |
+-----------------------+---------+-----------------------+
| FromFormat('x'*1_000) | 200 ns | 191 ns: 1.05x faster |
+-----------------------+---------+-----------------------+

@vstinnervstinner changed the title Optimize unicode_decode_utf8_writer()gh-119396: Optimize unicode_decode_utf8_writer()Jun 2, 2024
@vstinner
vstinner merged commit 3ea9b92 into python:mainJun 3, 2024
@vstinner
vstinner deleted the ascii_decode branch June 3, 2024 06:45
mliezun pushed a commit to mliezun/cpython that referenced this pull request Jun 3, 2024
Optimize unicode_decode_utf8_writer()
Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
barneygale pushed a commit to barneygale/cpython that referenced this pull request Jun 5, 2024
Optimize unicode_decode_utf8_writer()
Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
noahbkim pushed a commit to hudson-trading/cpython that referenced this pull request Jul 11, 2024
Optimize unicode_decode_utf8_writer()
Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
estyxx pushed a commit to estyxx/cpython that referenced this pull request Jul 17, 2024
Optimize unicode_decode_utf8_writer()
Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@vstinner