From 308e8d84a4f1d41e3557757c3bb904fd377a0864 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 4 Oct 2026 00:44:29 +0200 Subject: [PATCH] gh-158585: Optimize bytes.join() for non-empty separator --- Objects/stringlib/join.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Objects/stringlib/join.h b/Objects/stringlib/join.h index fe460d41f6700f..5fd2ca70f98dd3 100644 --- a/Objects/stringlib/join.h +++ b/Objects/stringlib/join.h @@ -134,13 +134,15 @@ STRINGLIB(bytes_join)(PyObject *sep, PyObject *iterable) } } else { - for (i = 0; i < nbufs; i++) { - Py_ssize_t n; - char *q; - if (i) { - memcpy(p, sepstr, seplen); - p += seplen; - } + Py_ssize_t n = buffers[0].len; + char *q = buffers[0].buf; + memcpy(p, q, n); + p += n; + + for (i = 1; i < nbufs; i++) { + memcpy(p, sepstr, seplen); + p += seplen; + n = buffers[i].len; q = buffers[i].buf; memcpy(p, q, n);