Skip to content

Commit

Permalink
Fix performance when splitting very long lines during display
Browse files Browse the repository at this point in the history
  • Loading branch information
Wilfred committed Jul 21, 2024
1 parent 9b6bc74 commit 1e8be45
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/display/style.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,11 @@ fn split_string_by_width(s: &str, max_width: usize, tab_width: usize) -> Vec<(&s
let mut parts: Vec<(&str, usize)> = vec![];
let mut s = s;

while width_respecting_tabs(s, tab_width) > max_width {
// Optimisation: width_respecting_tabs() walks the whole string,
// which is slow when we have files with massive lines. `s.len()`
// is always lower than width_respecting_tabs(s), so check that
// first.
while s.len() > max_width || width_respecting_tabs(s, tab_width) > max_width {
let offset = byte_offset_for_width(s, max_width, tab_width);

let part = substring_by_byte(s, 0, offset);
Expand Down

0 comments on commit 1e8be45

Please sign in to comment.