2012-07-17 1 views
1

Ce qui est plus rapide et consomme moins de mémoire - un tableau d'objets avec un ensemble de propriétés ou toutes les propriétés sous forme de tableaux de l'objet? Je crée un jeu de tuiles 2d et le monde consiste en tuiles, donc je crée une instance séparée de classe Tile pour chaque tuile, et certaines personnes disent que cela pourrait être plus rapide si j'utilisais des tableaux de propriétés de tuiles à la place. Je voudrais voir la différence de mes propres yeux, mais le jeu est trop complexe à ce stade pour réécrire le code.Tableau d'objets vs tableaux de propriétés d'objets - lequel est plus efficace?

Mise à jour: Je trouve un peu de temps pour tester les deux options, et les différences de mémoire et cpu insignifiants, tableau d'objets gagne pour être beaucoup plus facile de travailler avec (la lisibilité du code + simplicité de mise au point).

Répondre

3

Cela dépend probablement de vos modèles de création de tableaux et d'accès; mais, en règle générale, je ne m'attendrais pas à ce que ces deux approches présentent des différences de performance significatives. Si vous pensez vraiment que cela pourrait être un problème de performance, la seule façon d'être sûr est de mettre en œuvre les deux, de profiler le programme et de comparer les résultats.

ayant un réseau de Tile serait probablement beaucoup plus simple, le code straight-forward, alors allez avec ça. Si vous avez des problèmes de performances réels, consultez le profil pour trouver les sections coûteuses du code.

+0

Je dirais que le code simple et lisible est meilleur que le changement de performance en temps constant (le cas échéant). – edthethird

2

Du point de vue de l'utilisation de la mémoire, un ensemble de propriétés consommera moins de mémoire. D'un point de vue pratique cependant, en utilisant le tableau d'objets ajoute une couche d'abstraction qui permet de faciliter le débogage et la possibilité de modifier facilement le code à ajouter dans de nouvelles propriétés.

+0

Si tous les objets de tuiles sont déjà là et référencés par autre chose, la création d'un nouveau tableau d'objets et faisant référence aux mêmes tuiles, ne sera pas « consommer plus de mémoire » qu'un « tableau de propriétés ». C'est parce que l'affiche originale a expliqué que 'Tile' était une' classe' (par opposition à 'struct'). Le nouveau tableau ne contiendra donc que _references_ aux mêmes vieilles instances ('class' implique un type de référence). Un tableau de références, dans ces circonstances, consommera très peu de mémoire "supplémentaire" (les objets de mosaïque existant déjà). –

Questions connexes