public void AddingRemovingMultiComponentPerformance() { using var world = new GameWorld(); var component1 = world.RegisterComponent("Component1", new SingleComponentBoard(sizeof(int), 0)); var component2 = world.RegisterComponent("Component2", new SingleComponentBoard(sizeof(int), 0)); var component3 = world.RegisterComponent("Component3", new SingleComponentBoard(sizeof(int), 0)); var component4 = world.RegisterComponent("Component4", new SingleComponentBoard(sizeof(int), 0)); for (var i = 0; i != 4; i++) { var entities = new GameEntityHandle[1000]; world.CreateEntityBulk(entities); var sw = new Stopwatch(); sw.Start(); Span <ComponentType> span = stackalloc [] { component1, component2, component3, component4 }; foreach (var ent in entities) { world.AddMultipleComponent(ent, span); } sw.Stop(); if (i != 0) { Console.WriteLine($"Add -> {sw.Elapsed.TotalMilliseconds}ms"); } sw.Restart(); foreach (var ent in entities) { world.RemoveMultipleComponent(ent, span); } sw.Stop(); if (i != 0) { Console.WriteLine($"Remove -> {sw.Elapsed.TotalMilliseconds}ms"); } } }