"Poids" des méthodes dans des objets

"Poids" des méthodes dans des objets - Divers - Programmation

Marsh Posté le 31-03-2004 à 20:20:09    

Bonjour,
 
J'ai une question pour les férus d'optimisation et de décorticage des compilations de langages...
 
Je suis en train de me prendre quelque peu la tête sur une optimisation de mes classes, et j'en viens à me poser certaines questions.
 
Je pense que la réponse se situe indépendamment du langage.
 
En fait, je me demandais si un objet en mémoire comprend aussi le code de ses méthodes. Donc, par exemple, si un tableau de 15000 objets comprend 15000 fois le code de ses méthodes.
 
Vu la conséquence d'un tel fonctionnement, je me dis que surement non. En effet, le moindre des gars cherchant à optimiser un compilo décidera de virer tout ces doublons de code inutiles pour faire un seul code capable de s'adapter au contexte. De plus cette solution expliquerait plus ou moins la présence du this, pointeur référençant l'instance de classe sur laquelle s'exécute cette méthode.
 
Mais du coup, une de mes soi-disantes optimisation, consistant à séparer dans la partie "static" (ou "shared" ) de la classe les méthodes de mon objet (par exemple, les fameux save, load, add des wrappers de données classiques).
 
Est-ce que cette séparation est totalement inutile ? Ou bien sert-elle, mais quasiement à rien ? Ou bien reste-t-elle totalement indispensable (point de vue performance uniquement, je ne parle pas de clareté) ?
 
Voilà, j'espère que je me suis bien exprimé, je tacherai d'être plus clair si je vois que personne ne répond :D

Reply

Marsh Posté le 31-03-2004 à 20:20:09   

Reply

Marsh Posté le 31-03-2004 à 20:44:51    

styx31 a écrit :


En fait, je me demandais si un objet en mémoire comprend aussi le code de ses méthodes. Donc, par exemple, si un tableau de 15000 objets comprend 15000 fois le code de ses méthodes.

non, dans chaque objet il y a une référence vers le tas de bordel de sa classe, dont entre autres les méthodes. Doonc chaque méthode ne se retrouve qu'une seule fois en mémoire.
 
Même pour les langages objets sans classes, il y a un système qui ressemble à ça (pointeur vers le prototype).


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed