LL perf (UI): Smaller UI items #372

Closed
opened 2026-10-04 14:09:32 +00:00 by sky_line · 1 comment
Owner

From the LL-origin inefficiency audit (finding U16). File/line references are from commit 0229f8872c; re-locate them before working.

Smaller UI items

  • findIdByName linear scan of the name cache per history line (llavatarnamecache.cpp:799-819).
  • Conversations container:
    • idleProcessEvents runs while hidden
    • sort+arrange on every participant event
    • per-frame arrange with distance sort (llfloaterimcontainer.cpp:493-544, 701-703)
  • LLOutputMonitorCtrl::draw builds a std::set of all voice participants every frame per indicator (lloutputmonitorctrl.cpp:146-160).
  • LLFloaterView::refresh does a dynamic_cast and adjustToFitScreen over every floater every frame (llfloater.cpp:3185-3202, 3512, 3551).
  • drawChildren calls calcScreenRect per child (O(N·depth), llview.cpp:1268-1320).
  • getPathname() builds a string on every handled click with recording off (llview.cpp:798).
  • LLSpeakerMgr::update (llspeakers.cpp:364-480):
    • getAvatars plus a findObject per text speaker
    • a full sort
    • driven from FSRadar at 1 Hz (fsradar.cpp:338) and from the nearby-chat speaking indicator (llfloaterimnearbychat.cpp:785)
  • Regexes compiled per call: LLUrlEntryIPv6::getLabel/getQuery (llurlentry.cpp:1708, 1723), llweb.cpp:240-246, llviewerregion.cpp:151-152, llnotificationofferhandler.cpp:165. Low frequency; make them static.

Checked and fine:

  • LLScrollListCtrl sorting is gated
  • LLUrlRegistry::findUrl is pre-filtered and cached
  • LLAvatarNameCache batching and expiry
  • toast pools
  • LLAvatarList dirty gating
  • history load reads only the last 20 KB
  • LLNetMap raster is sliced
  • LLControlGroup uses an unordered_map with string_view

Verify the cost (profile or timer) before and after changing it.

From the LL-origin inefficiency audit (finding U16). File/line references are from commit 0229f8872c; re-locate them before working. **Smaller UI items** - `findIdByName` linear scan of the name cache per history line (`llavatarnamecache.cpp:799-819`). - Conversations container: - `idleProcessEvents` runs while hidden - sort+arrange on every participant event - per-frame arrange with distance sort (`llfloaterimcontainer.cpp:493-544, 701-703`) - `LLOutputMonitorCtrl::draw` builds a `std::set` of all voice participants every frame per indicator (`lloutputmonitorctrl.cpp:146-160`). - `LLFloaterView::refresh` does a `dynamic_cast` and `adjustToFitScreen` over every floater every frame (`llfloater.cpp:3185-3202, 3512, 3551`). - `drawChildren` calls `calcScreenRect` per child (O(N·depth), `llview.cpp:1268-1320`). - `getPathname()` builds a string on every handled click with recording off (`llview.cpp:798`). - `LLSpeakerMgr::update` (`llspeakers.cpp:364-480`): - `getAvatars` plus a `findObject` per text speaker - a full sort - driven from FSRadar at 1 Hz (`fsradar.cpp:338`) and from the nearby-chat speaking indicator (`llfloaterimnearbychat.cpp:785`) - Regexes compiled per call: `LLUrlEntryIPv6::getLabel/getQuery` (`llurlentry.cpp:1708, 1723`), `llweb.cpp:240-246`, `llviewerregion.cpp:151-152`, `llnotificationofferhandler.cpp:165`. Low frequency; make them static. **Checked and fine:** - `LLScrollListCtrl` sorting is gated - `LLUrlRegistry::findUrl` is pre-filtered and cached - `LLAvatarNameCache` batching and expiry - toast pools - `LLAvatarList` dirty gating - history load reads only the last 20 KB - `LLNetMap` raster is sliced - `LLControlGroup` uses an unordered_map with string_view Verify the cost (profile or timer) before and after changing it.
sky_line added this to the Slipstream project 2026-10-06 15:04:14 +00:00
Author
Owner

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).
sky_line 2026-10-11 13:25:04 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#372
No description provided.