先上源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Collections;
using Demo;
using Unity.Rendering;
using Unity.Transforms;
using Unity.Mathematics;

public class MainECS : MonoBehaviour {

    public MeshInstanceRendererComponent cube;
    public GameObject obj;
    [SerializeField] private NativeArray<Entity> entities;

    public bool ECS = true;

    void Start () {

        if (ECS)
        {
            //entities = new NativeArray<Entity>(100, Allocator.Persistent);
            EntityManager entityManager = World.Active.GetOrCreateManager<EntityManager>();

            EntityArchetype archetype = entityManager.CreateArchetype(typeof(Position),typeof(Rotation), typeof(Count), typeof(TransformMatrix));

            //entityManager.Instantiate(obj, entities);

            

            for (int j = 0; j < 300; j++)
            {
                for (int i = 0; i < 300; i++)
                {
                    //entities[i] = entityManager.CreateEntity(archetype);
                    Entity entity = entityManager.CreateEntity(archetype);
                    entityManager.AddSharedComponentData(entity, cube.Value);

                    entityManager.SetComponentData(entity, new Position { Value = new float3(-20 + j * 2, -20 + i * 2, 0) });
                }
            }
        }
        else
        {
            for (int j = 0; j < 300; j++)
            {
                for (int i = 0; i < 300; i++)
                {
                    Instantiate(obj, new Vector3(-20 + j * 2, -20 + i * 2, 0), Quaternion.Euler(Vector3.zero));
                }
            }
        }



        

    }

    private void OnDestroy()
    {
        //if(ECS)
        //    entities.Dispose();
    }
}

空场景时

使用ECS创建9万个Cube

使用传统Instantiate方式创建9万个