significantly improve performance on large strings
authorNRK <nrk@disroot.org>
Wed, 23 Mar 2022 20:04:04 +0000 (02:04 +0600)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Fri, 25 Mar 2022 21:49:07 +0000 (22:49 +0100)
commit7269c5355d257dd2ad2c53f15dc9c1cf6796aea5
treef043c06fb58bc7a161c9329c48ec98759d9cc401
parent6be057f060543bb0f3ed9423904263617cdffffe
significantly improve performance on large strings

this replaces inefficient pattern of `MIN(TEXTW(..), n)` with
drw_fontset_getwidth_clamp() instead, which is far more efficient when
we only want up to a certain width.

dumping a decently sized (unicode) emoji file into dmenu, I see the
startup time drop significantly with this patch.

before -> after
360ms  -> 160ms

this should also noticeably improve input latency (responsiveness) given
that calcoffsets() and drawmenu() are pretty hot functions.
dmenu.c