Performance hint using Jobs vs "Plain" Component Systems

I’m making performance tests with ECS and a bunch of custom entities.

I have an archetype with Translation and a “MoveSpeedComponent”:

public struct MoveSpeedComponent : IComponentData {

    public float moveSpeed;

}

I have implemented a “MoverSystem” that updates the translation applying the movement at certain speed, nothing fancy.

I’ve imlpemented in three different ways:

  • As a IJobChunk
  • As a “plain” Job? I don’t know how is that named, like this:
public class MoverSystem : JobComponentSystem
{
    [BurstCompile]
    struct MoverSystemJob : IJobForEach<MoveSpeedComponent, Translation>
....
}
  • As a Component system

I didn’t notice any performance improvement between them, I’ve tested it in Debug and Release Mode, I tried activating / deactivating Jobs’ Leak detection, Burst’s Safety Checks and other options without any luck.

In release mode I can spawn about 3K-4K entities, above that FPS drops below 30 fps.
I was expecting to have much more using Jobs.

Am I doing something wrong?

5068739–498227–MoverSystem.cs (3.75 KB)

What says profiler attached to build, what cause performance drops?

Thanks, I assumed ECS wasn’t supported, don’t know why.

I’ve seen it’s not about jobs, jobs section is almost empty, material instancing was deactivated and I had a crazy amount of drawcalls.

Thank u!