Quadratic time in `xml.etree.ElementTree` when parsing text with a large number of comments
Abierto
Nadie ha tomado este issue todavía.
extension-modules
topic-XML
type-bug
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
import time
import xml.etree.ElementTree as ET
for N in (5000, 10000, 20000, 40000, 80000):
data = b"<r>" + b"x<!---->" * N + b"</r>"
s = time.perf_counter()
ET.fromstring(data)
dt = time.perf_counter() - s
print(f"{N} {dt}s")
I see:
$ python repro.py
5000 0.025435873976675794s
10000 0.0888163199997507s
20000 0.3610062320076395s
40000 1.4099939750158228s
80000 5.41402202800964s
Found by OSS-Fuzz.
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
- gh-155407
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el reproductor de ET.fromstring() incluido en el issue y compara los tiempos a medida que aumenta el número de comentarios. Revisa el PR enlazado gh-155407 para entender el trabajo que ya está en curso; se considera terminado cuando el análisis de esta entrada ya no muestra un crecimiento del tiempo cuadrático.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100