ArtemisD: A D port of Artemis Entity System Framework for games.

Agustin agustin.l.alvarez at hotmail.com
Fri Oct 11 12:29:51 PDT 2013


Correct me if i'm wrong, but isn't the whole point of Artemis 
design to take advantage of CPU cache levels by storing every 
component of the same type contignously?

In your example, the components are stored non contignous, using 
the GC

     Entity e = world.createEntity();
     e.addComponent(new Position(0,0));
     e.addComponent(new Velocity(10,0));
     e.addToWorld();

I think a good optimization will be implementing a non GC vector 
class to store every component contignous, and changing it to this

     Entity e = world.createEntity();
     e.addComponent!Position(0, 0); // Forwarding. Just like 
emplace for C++
     e.addComponent!Velocity(10, 0); // Forwarding.
     e.addToWorld();

Position and Velocity are stored in an object pool vector that 
will take advantage of the CPU cache when iterating.


More information about the Digitalmars-d-announce mailing list