Page MenuHomePhabricator

Typing is slow on very long documents
Closed, ResolvedPublic

Description

In a long document (~300k characters long), typing is very slow, especially near the end of the document.

Taking a performance profile, most of the time is spent in ve.dm.TreeModifier.prototype.getAdjustedPosition.

In my local test on a plain text document of 300k chars, each keystroke at the end spends ~360ms in ve.dm.TransactionProcess.prototype.process.

Event Timeline

Esanders updated the task description. (Show Details)

Change 623355 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] getAdjustedPosition: Rewrite inner loop for performance

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

After the above patch we spend ~10ms in ve.dm.TransactionProcess.prototype.process.

Change 623355 merged by jenkins-bot:
[VisualEditor/VisualEditor@master] getAdjustedPosition: Rewrite inner loop for performance

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

Change 623387 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] Follow-up Ic1669009: Use for..in loop instead of Object.Keys

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

Change 623403 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] TreeModifier: More optimizations

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

Change 623410 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] TreeModifier: Add optimization for short array comparison

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

Change 623424 had a related patch set uploaded (by Jforrester; owner: Jforrester):
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (89a8d99f5)

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

Change 623424 merged by jenkins-bot:
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (89a8d99f5)

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

Change 623387 merged by jenkins-bot:
[VisualEditor/VisualEditor@master] Follow-up Ic1669009: Use for..in loop instead of Object.keys()

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

Change 623655 had a related patch set uploaded (by Bartosz Dziewoński; owner: Bartosz Dziewoński):
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (15186ed26)

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

Change 623403 merged by jenkins-bot:
[VisualEditor/VisualEditor@master] TreeModifier: More optimizations

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

Change 623655 merged by jenkins-bot:
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (15186ed26)

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

Change 623410 merged by jenkins-bot:
[VisualEditor/VisualEditor@master] TreeModifier: Add optimization for short array comparison

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

Change 623875 had a related patch set uploaded (by Bartosz Dziewoński; owner: Bartosz Dziewoński):
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (b49db9a5b)

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

Change 623875 merged by jenkins-bot:
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (9534694b4)

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