diff options
| author | 2024-12-17 12:47:46 -0500 | |
|---|---|---|
| committer | 2024-12-19 14:10:08 +0000 | |
| commit | d2df7b24c0494f6da09353518bee9e5d9fba8b38 (patch) | |
| tree | f1d0ef620b734302edb90d0bc4a8d2ffce09b95b | |
| parent | Optimized membership lookup for large servers (diff) | |
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.
| -rw-r--r-- | src/coremods/core_who.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/coremods/core_who.cpp b/src/coremods/core_who.cpp index b7ad9f71a..92c8aee94 100644 --- a/src/coremods/core_who.cpp +++ b/src/coremods/core_who.cpp @@ -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; |
