Near Endless Loop calling execEditLength

Offen
#79 4 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
42/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
javascript
Bereich
tooling

Rechercherichtung

Beginne damit, den im Issue beschriebenen langsamen createPatch-Fall zu reproduzieren, und untersuche dann in src/diff/base.js den Bereich um diagonalPath, editLength und maxEditLength. Vergleiche das Verhalten mit der verlinkten Mocha-Aufrufstelle und stelle für die gemeldete Eingabe eine begrenzte Laufzeit oder ein früheres Fehlschlagen fest, ohne das beabsichtigte diff-Ergebnis zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

performance

I was noticing an endless hang when using mocha and filed this issue and managed to run down the problem in mocha to the use of jsdiff. Their use of createPatch here seems to cause an almost endless loop.

While it would eventually fail once maxEditLength is exceeded this would take ages as diagonalPath grows at the rate of editLength here.

The test has a maxEditLength of 57579 and even after about ~10 minutes of processing editLength is only 4542. Sadly it gets exponential worse.

Vorherrschende Sprache
JavaScript
Sterne
9.2k
Forks
555
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
5

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus kpdecker/jsdiff

Alle Issues in kpdecker/jsdiff

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.