chaque entité créé provoque une allocation égale à la taille de tous les composants
Si tu utilises un vector par type de composant tu peux limiter sa taille du tableau à "entité_max qui a ce composant - entité_min qui a ce composant + 1".
Mais oui, ce stockage gaspille de la mémoire
Si tu as des idées d'autres layouts, je cherche de l'inspiration!
Pas tellement. J'avais commencé avec une implémentation simple : chaque système avait une map.
Après quelques tests et benchmarks (cf mon commentaire sur perf), chaque système contient finalement :
* un tableau (brut) de Composant (moins coûteux qu'un vector)
* un std::vector d'entités, pour savoir quelles entités ont ce composant. Ce vector est trié pour optimiser l'utilisation du cache quand le système est mis à jour.
Rien de bien original, mais ça me suffit pour mon usage :-)
[^] # Re: Benchmark
Posté par pepp . En réponse au journal Veuillez instancier ce journal avant de le lire. Évalué à 3.
Si tu utilises un vector par type de composant tu peux limiter sa taille du tableau à "entité_max qui a ce composant - entité_min qui a ce composant + 1".
Mais oui, ce stockage gaspille de la mémoire
Pas tellement. J'avais commencé avec une implémentation simple : chaque système avait une map.
Après quelques tests et benchmarks (cf mon commentaire sur perf), chaque système contient finalement :
* un tableau (brut) de Composant (moins coûteux qu'un vector)
* un std::vector d'entités, pour savoir quelles entités ont ce composant. Ce vector est trié pour optimiser l'utilisation du cache quand le système est mis à jour.
Rien de bien original, mais ça me suffit pour mon usage :-)