nhwn: optimize counting digits in line numbers
This commit is contained in:
parent
93f6a4b9d8
commit
8a5c5681da
@ -1713,7 +1713,18 @@ fn emit_messages_default(
|
||||
let max_line_num_len = if self.ui_testing {
|
||||
ANONYMIZED_LINE_NUM.len()
|
||||
} else {
|
||||
self.get_max_line_num(span, children).to_string().len()
|
||||
// Instead of using .to_string().len(), we iteratively count the
|
||||
// number of digits to avoid allocation. This strategy has sizable
|
||||
// performance gains over the old string strategy.
|
||||
let mut n = self.get_max_line_num(span, children);
|
||||
let mut num_digits = 0;
|
||||
loop {
|
||||
num_digits += 1;
|
||||
n /= 10;
|
||||
if n == 0 {
|
||||
break num_digits;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
match self.emit_message_default(span, message, code, level, max_line_num_len, false) {
|
||||
|
Loading…
Reference in New Issue
Block a user