Improve terminal rendering performance (#33345)

Closes #18263

Improvements:

• **Batch text rendering** - Combine adjacent cells with identical
styling into single text runs to reduce draw calls
• **Throttle hyperlink searches** - Limit hyperlink detection to every
100ms or when mouse moves >5px to reduce CPU usage
• **Pre-allocate collections** - Use `Vec::with_capacity()` for cells,
runs, and regions to minimize reallocations
• **Optimize background regions** - Merge adjacent background rectangles
to reduce number of draw operations
• **Cache selection text** - Only compute terminal selection string when
selection exists

Release Notes:

- Improved terminal rendering performance.

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
Alisina Bahadori
2025-07-08 09:05:01 -06:00
committed by GitHub
co-authored by Conrad Irwin
parent bcac748c2b
commit 925464cfc6
9 changed files with 609 additions and 177 deletions
+1 -1
View File
@@ -1066,7 +1066,7 @@ impl DisplaySnapshot {
}
let font_size = editor_style.text.font_size.to_pixels(*rem_size);
text_system.layout_line(&line, font_size, &runs)
text_system.layout_line(&line, font_size, &runs, None)
}
pub fn x_for_display_point(