Description
Bug description:
Python3.13rc1 seems to be about 20-25% slower than Python3.12.4.
Platform: M1 Mac running MacOS Sonoma 14.5
I first noticed the issue when running this repository where Python3.13rc1 ran on average 20-25% slower than Python3.12.4
With help from the Python discord server, we were able to create this minimal reproducible example:
from time import process_time
class Lexer:
def __init__(self, data):
self.data = data
self.index = 0
def detect(self, text):
i = 0
for char in text:
if self.peek(i) != char:
return False
i += 1
return True
def peek(self, amt=1):
if self.index + amt < len(self.data):
return self.data[self.index + amt]
else:
return None
text = "return text + indent * ' ' + '}'\n" * 200
needle = "return text + indent * ' ' + '}'\n" * 199 + "Nope\n"
lexer = Lexer(text)
start = process_time()
for x in range(10_000):
lexer.detect(needle)
print(process_time() - start)
These were the results across many tests:
3.12.4: 7.742122s
3.13rc1: 8.309326s
The performance issue was not reproducible on other Operating Systems.
CPython versions tested on:
3.11.1, 3.12.4, 3.13
CPython Options:
For my testing, I used the official Python3.13rc1 installer from Python.org, which has the following configuration:
OPT:
3.13rc1: -DNDEBUG -g -O3 -Wall
3.12.4: -DNDEBUG -g -O3 -Wall
CONFIG_ARGS:
3.13rc1: '--enable-framework' '--with-framework-name=Python' '--enable-universalsdk=/' '--with-universal-archs=universal2' '--enable-optimizations' '--with-lto' '--without-ensurepip' '--with-system-libmpdec' '--with-openssl=/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local' 'LIBLZMA_CFLAGS=-I/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/include' 'LIBLZMA_LIBS=-L/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/lib -llzma' 'LIBMPDEC_CFLAGS=-I/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/include' 'LIBMPDEC_LIBS=-L/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/lib -lmpdec -lm' 'LIBSQLITE3_CFLAGS=-I/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/include' 'LIBSQLITE3_LIBS=-L/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/lib -lsqlite3' 'TCLTK_CFLAGS=-I/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/include' 'TCLTK_LIBS=-L/Users/nad/release-tools/macos-installer/installer/variant/binaries/build/libraries/usr/local/lib -ltcl -ltk' 'CC=clang'
3.12.4: '-C' '--enable-framework' '--enable-universalsdk=/' '--with-universal-archs=universal2' '--with-computed-gotos' '--without-ensurepip' '--with-openssl=/tmp/_py/libraries/usr/local' '--enable-optimizations' '--with-lto' 'TCLTK_CFLAGS=-I/tmp/_py/libraries/usr/local/include' 'TCLTK_LIBS=-ltcl8.6 -ltk8.6' 'LDFLAGS=-g' 'CFLAGS=-g' 'CC=clang'
Operating systems tested on:
Linux, macOS, Windows
Metadata
Metadata
Assignees
Projects
Status