Subject: bug#79141: 31.0.50; The tab-bar-format-align-right cache doesn't take face changes and per-frame faces into account

From: Daniel Mendler <[email-masked]>
Date: Wed, 13 Aug 2025 08:54:40 +0200

Juri Linkov <[email-masked]> writes:

>> I went back to my own pixel width caching for my system status bar.
>> Maybe in this scenario the pixel width computation is particularly
>> expensive since the tab elements to the right of
>> tab-bar-format-align-right are long. During redisplay dominated loads,
>> e.g. when doing pixel precise scrolling, the pixel width computation
>> accounts for 5% or more of the runtime according to the profiler. With
>> pixel caching the tab bar recomputation disappears from the profile. I
>> have seen similar issues with expensive mode line elements.
>
> How often your tab-bar is updated?  For frequent string-pixel-width calls
> using debounce or throttle like from https://github.com/karthink/timeout
> could help.

It is recomputed completely on every redisplay. It might be possible to
throttle the tab bar recomputation, such that it happens only a few
times per second. This will lead to other difficulties however, since in
some cases the tab bar should react immediately (e.g., when creating new
tabs or when toggling some elements).

Daniel