Update RaiseEventBenchmark for engine changes (#37349)

* Update RaiseEventBenchmark

* fix test

* poke_tests
This commit is contained in:
Leon Friedrich
2025-11-13 23:50:17 +13:00
committed by GitHub
parent 4109fdbea8
commit 44e5073d32

View File

@@ -23,6 +23,8 @@ public class RaiseEventBenchmark
PoolManager.Startup(typeof(BenchSystem).Assembly); PoolManager.Startup(typeof(BenchSystem).Assembly);
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult(); _pair = PoolManager.GetServerClient().GetAwaiter().GetResult();
var entMan = _pair.Server.EntMan; var entMan = _pair.Server.EntMan;
var fact = _pair.Server.ResolveDependency<IComponentFactory>();
var bus = (EntityEventBus)entMan.EventBus;
_sys = entMan.System<BenchSystem>(); _sys = entMan.System<BenchSystem>();
_pair.Server.WaitPost(() => _pair.Server.WaitPost(() =>
@@ -30,6 +32,8 @@ public class RaiseEventBenchmark
var uid = entMan.Spawn(); var uid = entMan.Spawn();
_sys.Ent = new(uid, entMan.GetComponent<TransformComponent>(uid)); _sys.Ent = new(uid, entMan.GetComponent<TransformComponent>(uid));
_sys.Ent2 = new(_sys.Ent.Owner, _sys.Ent.Comp); _sys.Ent2 = new(_sys.Ent.Owner, _sys.Ent.Comp);
_sys.NetId = fact.GetRegistration<TransformComponent>().NetID!.Value;
_sys.EvSubs = bus.GetNetCompEventHandlers<BenchSystem.BenchEv>();
}) })
.GetAwaiter() .GetAwaiter()
.GetResult(); .GetResult();
@@ -60,6 +64,12 @@ public class RaiseEventBenchmark
return _sys.RaiseICompEvent(); return _sys.RaiseICompEvent();
} }
[Benchmark]
public int RaiseNetEvent()
{
return _sys.RaiseNetIdEvent();
}
[Benchmark] [Benchmark]
public int RaiseCSharpEvent() public int RaiseCSharpEvent()
{ {
@@ -74,6 +84,8 @@ public class RaiseEventBenchmark
public delegate void EntityEventHandler(EntityUid uid, TransformComponent comp, ref BenchEv ev); public delegate void EntityEventHandler(EntityUid uid, TransformComponent comp, ref BenchEv ev);
public event EntityEventHandler? OnCSharpEvent; public event EntityEventHandler? OnCSharpEvent;
public ushort NetId;
internal EntityEventBus.DirectedEventHandler?[] EvSubs = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -92,7 +104,7 @@ public class RaiseEventBenchmark
public int RaiseCompEvent() public int RaiseCompEvent()
{ {
var ev = new BenchEv(); var ev = new BenchEv();
EntityManager.EventBus.RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev); RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev);
return ev.N; return ev.N;
} }
@@ -100,7 +112,16 @@ public class RaiseEventBenchmark
{ {
// Raise with an IComponent instead of concrete type // Raise with an IComponent instead of concrete type
var ev = new BenchEv(); var ev = new BenchEv();
EntityManager.EventBus.RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev); RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev);
return ev.N;
}
public int RaiseNetIdEvent()
{
// Raise a "IComponent" event using a net-id index delegate array (for PVS & client game-state events)
var ev = new BenchEv();
ref var unitEv = ref Unsafe.As<BenchEv, EntityEventBus.Unit>(ref ev);
EvSubs[NetId]?.Invoke(Ent2.Owner, Ent2.Comp, ref unitEv);
return ev.N; return ev.N;
} }
@@ -118,6 +139,7 @@ public class RaiseEventBenchmark
} }
[ByRefEvent] [ByRefEvent]
[ComponentEvent(Exclusive = false)]
public struct BenchEv public struct BenchEv
{ {
public int N; public int N;