Quadratic time in `xml.etree.ElementTree` when parsing text with a large number of comments
Offen
Dieses Issue hat noch niemand übernommen.
extension-modules
topic-XML
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit dem ET.fromstring()-Reproduzierbeispiel aus dem Issue und vergleichen Sie die Laufzeiten, während die Anzahl der Kommentare wächst. Sehen Sie sich den verlinkten PR gh-155407 an, um die bereits laufenden Arbeiten zu verstehen; abgeschlossen ist die Aufgabe, wenn das Parsen dieser Eingabe kein quadratisches Laufzeitwachstum mehr zeigt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100