Page MenuHomePhabricator

Optimize ve.dm.Document#findText
Open, Needs TriagePublic

Description

At present, ve.dm.Document#findText spends a lot of time grinding through linear data. Here are some basic profiling results with 100 regexp TextMatchEditChecks running:

2892 ve.dm.Document#findText:
  2401 ve.dm.LinearData#forEachRunOfContent
    ...
      845 ve.dm.LinearData#getCharacterData
      715 ve.dm.LinearData#isElementData
      575 ve.dm.TextFinder#find
        213 ve.dm.RegExpTextFinder.findRanges

As the profile shows, 7x longer is spent grinding linear data than actually testing regular expressions.

Event Timeline

Change #1287413 had a related patch set uploaded (by Divec; author: Divec):

[VisualEditor/VisualEditor@master] Optimize ve.dm.Document#findText

https://gerrit.wikimedia.org/r/1287413

Change #1287413 merged by jenkins-bot:

[VisualEditor/VisualEditor@master] Optimize ve.dm.Document#findText

https://gerrit.wikimedia.org/r/1287413

Change #1289455 had a related patch set uploaded (by DLynch; author: DLynch):

[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (2db0070d9)

https://gerrit.wikimedia.org/r/1289455

Change #1289455 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (2db0070d9)

https://gerrit.wikimedia.org/r/1289455