コード例 #1
0
        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");
                }
            }
        }