2010-11-05 9 views
1

Combien coûte une référence/pointeur sur un objet en termes de mémoire et de performance dans Actionscript 3? Les références faibles (à l'aide de l'objet Dictionary) sont-elles inférieures, identiques ou plus?Référence de l'objet AS3/coût du pointeur

Répondre

1

Les références ne sont rien de plus que l'adresse d'un objet situé sur le tas. Je suppose que cela dépend de la plage d'adresses quant au nombre d'octets/s nécessaires. En tout cas, il va être vraiment vraiment petit, soit un mot pour les machines 32 bits ou un mot pour 64bit. Vous pourriez aussi bien les considérer comme insignifiants et ne vous inquiétez pas du tout de l'espace qu'ils occupent. Avec les performances, la seule chose à laquelle vous devez vous soucier est lorsque vous accédez à une variable statique dans une autre classe, certaines recherches supplémentaires sont nécessaires, ce qui ralentit un peu les performances (mais une variable statique dans la même classe que celle où vous êtes l'appel est le même - d'après ce que j'ai lu). Ma supposition éclairée est que les références faibles sont les mêmes en ce qui concerne les frais généraux, et même si elles ne l'étaient pas, ce serait une différence microscopique.

Si vous êtes intéressé à en savoir plus sur les sombres profondeurs de l'AVM2 alors c'est une assez bonne lecture http://learn.adobe.com/wiki/display/AVM2/1.+Introduction

Espoir qui aide

+1

Petite correction: les références sont comme des pointeurs, 4 octets sur 32 bits machine et 8 octets sur 64 bits. – alxx

+0

@alxx - merci, j'ai mis à jour la réponse avec ça. Je pensais que peut-être que Flash utilisait un espace d'adressage limité pour une raison quelconque: S – Allan

+0

AFAIK, le processus ne peut pas dire à l'OS de servir la mémoire dans une plage prédéfinie. Dans Flex Builder, vous pouvez voir les valeurs des références; ils peuvent être très différents. – alxx