Optimized WHO command

On our server hosting 150K users we noticed that the WHO command was high on the perf capture profile and on closer inspection we noticed that the majority of users do not have the invisible mode set.

Since IsModeSet is a small inline function that does an array lookup we were able to reduce server load by calling IsModeSet first to short-circuit the comparatively expensive SharesChannelWith call.
This commit is contained in:
Glen Miner 2024-12-17 12:47:46 -05:00 committed by Sadie Powell
parent 41293a058d
commit d2df7b24c0

View File

@ -445,7 +445,7 @@ void CommandWho::WhoUsers(LocalUser* source, const std::vector<std::string>& par
User* user = GetUser(iter);
// Only show users in response to a fuzzy WHO if we can see them normally.
bool can_see_normally = user == source || source->SharesChannelWith(user) || !user->IsModeSet(invisiblemode);
bool can_see_normally = user == source || !user->IsModeSet(invisiblemode) || source->SharesChannelWith(user);
if (data.fuzzy_match && !can_see_normally && !source_has_users_auspex)
continue;