[PR #15500] Reduce cost of cursor invalidation #30658

Open
opened 2026-01-31 09:42:09 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/15500

State: closed
Merged: Yes


Performance of printing enwik8.txt at the following block sizes:
4KiB (printf): 53MB/s -> 58MB/s
128KiB (cat): 170MB/s -> 235MB/s

This commit is imperfect. Support for more than one rendering
engine was "hacked" into Renderer and is not quite correct.
As such, this commit cannot fix cursor invalidation correctly either,
and while some bugs are fixed (engines may see highly inconsistent
TextBuffer and Cursor states), it introduces others (an error in the
first engine may result in the second engine not executing).
Neither of those are good and the underlying issue remains to be fixed.

Validation Steps Performed

  • Seems ok?
**Original Pull Request:** https://github.com/microsoft/terminal/pull/15500 **State:** closed **Merged:** Yes --- Performance of printing enwik8.txt at the following block sizes: 4KiB (printf): 53MB/s -> 58MB/s 128KiB (cat): 170MB/s -> 235MB/s This commit is imperfect. Support for more than one rendering engine was "hacked" into `Renderer` and is not quite correct. As such, this commit cannot fix cursor invalidation correctly either, and while some bugs are fixed (engines may see highly inconsistent TextBuffer and Cursor states), it introduces others (an error in the first engine may result in the second engine not executing). Neither of those are good and the underlying issue remains to be fixed. ## Validation Steps Performed * Seems ok? ✅
claunia added the pull-request label 2026-01-31 09:42:09 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#30658