mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-30 03:23:08 +03:00
Use utils.StringWidth to optimize rendering performance
runewidth.StringWidth is an expensive call, even if the input string is pure ASCII. Improve this by providing a wrapper that short-circuits the call to len if the input is ASCII. Benchmark results show that for non-ASCII strings it makes no noticable difference, but for ASCII strings it provides a more than 200x speedup. BenchmarkStringWidthAsciiOriginal-10 718135 1637 ns/op BenchmarkStringWidthAsciiOptimized-10 159197538 7.545 ns/op BenchmarkStringWidthNonAsciiOriginal-10 486290 2391 ns/op BenchmarkStringWidthNonAsciiOptimized-10 502286 2383 ns/op
This commit is contained in:
@ -56,7 +56,7 @@ func getBranchDisplayStrings(
|
||||
// Recency is always three characters, plus one for the space
|
||||
availableWidth := viewWidth - 4
|
||||
if len(branchStatus) > 0 {
|
||||
availableWidth -= runewidth.StringWidth(utils.Decolorise(branchStatus)) + 1
|
||||
availableWidth -= utils.StringWidth(utils.Decolorise(branchStatus)) + 1
|
||||
}
|
||||
if icons.IsIconEnabled() {
|
||||
availableWidth -= 2 // one for the icon, one for the space
|
||||
@ -65,7 +65,7 @@ func getBranchDisplayStrings(
|
||||
availableWidth -= utils.COMMIT_HASH_SHORT_SIZE + 1
|
||||
}
|
||||
if checkedOutByWorkTree {
|
||||
availableWidth -= runewidth.StringWidth(worktreeIcon) + 1
|
||||
availableWidth -= utils.StringWidth(worktreeIcon) + 1
|
||||
}
|
||||
|
||||
displayName := b.Name
|
||||
@ -79,7 +79,7 @@ func getBranchDisplayStrings(
|
||||
}
|
||||
|
||||
// Don't bother shortening branch names that are already 3 characters or less
|
||||
if runewidth.StringWidth(displayName) > max(availableWidth, 3) {
|
||||
if utils.StringWidth(displayName) > max(availableWidth, 3) {
|
||||
// Never shorten the branch name to less then 3 characters
|
||||
len := max(availableWidth, 4)
|
||||
displayName = runewidth.Truncate(displayName, len, "…")
|
||||
|
Reference in New Issue
Block a user