Optimizations from server profile (#38290)
* Properly cache regexes in chat sanitization/accents Wow I wonder if `new Regex()` has a cost to it *looks at server profile*. * Avoid lag caused by Tippy command completions CompletionHelper.PrototypeIDs explicitly says *not* to use it with EntityPrototype. Unsurprisingly, reporting a completion result for every entity prototype in the game is a *bad idea*. * Add active count metrics to some high-load systems Mover & NPCs I suspect the thing that caused the Leviathan round to shit itself on performance is NPC spam in space or something. So let's verify that. * Enable parallel processing on pow3r again Originally disabled due to a theory of it causing bugs, it was re-enabled on Vulture, and I'm not aware of it having caused any issues there. * Replace hashset with bitflags for AtmosMonitor alert types. Allocating these hashsets was like 20% of the CPU of atmos, somehow. * Cache HashSet used for space movement collider checks Turns out this was a ton of server allocations. Huh.
This commit is contained in:
committed by
GitHub
parent
d0c104e4b0
commit
444180c20d
@@ -72,6 +72,8 @@ public abstract partial class SharedMoverController : VirtualController
|
||||
/// </summary>
|
||||
public Dictionary<EntityUid, bool> UsedMobMovement = new();
|
||||
|
||||
private readonly HashSet<EntityUid> _aroundColliderSet = [];
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
UpdatesBefore.Add(typeof(TileFrictionController));
|
||||
@@ -454,7 +456,9 @@ public abstract partial class SharedMoverController : VirtualController
|
||||
var (uid, collider, mover, transform) = entity;
|
||||
var enlargedAABB = _lookup.GetWorldAABB(entity.Owner, transform).Enlarged(mover.GrabRange);
|
||||
|
||||
foreach (var otherEntity in lookupSystem.GetEntitiesIntersecting(transform.MapID, enlargedAABB))
|
||||
_aroundColliderSet.Clear();
|
||||
lookupSystem.GetEntitiesIntersecting(transform.MapID, enlargedAABB, _aroundColliderSet);
|
||||
foreach (var otherEntity in _aroundColliderSet)
|
||||
{
|
||||
if (otherEntity == uid)
|
||||
continue; // Don't try to push off of yourself!
|
||||
|
||||
Reference in New Issue
Block a user