Bonjour;
S'il vous plait qui augmente le plus le temps d'exécution de l'initialisation d'un tableau ,, alloué dynamiquement ou bien déclaré statiquement.
Merci
Bonjour;
S'il vous plait qui augmente le plus le temps d'exécution de l'initialisation d'un tableau ,, alloué dynamiquement ou bien déclaré statiquement.
Merci
Bonjour,
L'allocation dynamique va légèrement être plus couteuse en temps que l'allocation statique (car l'allocation statique n'est pas vraiment une allocation à l'exécution).
Mais je ne pense pas que cela soit un argument pour choisir en statique et dynamique (à part peut être dans les programme qui doivent tout faire à la microseconde précise :p )
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
S'il s'agit simplement du temps d'exécution de l'initialisation d'un tableau, je suppose que c'est kifkif, quel que soit le type de tableau. Je suppose que le microprocesseur ne voit pas la différence entre une adresse mémoire à remplir sur une zone correspondant au tas et une autre correspondant à une zone du programme (pile, zone statique, etc) : une adresse est une adresse. La vérification, de la part du microprocesseur, de l'accès mémoire sur une zone permise ou non se fait à chaque accès, je pense.S'il vous plait qui augmente le plus le temps d'exécution de l'initialisation d'un tableau ,, alloué dynamiquement ou bien déclaré statiquement.
Je pense que ce qui diffère au niveau du temps sont les instructions utilisées pour initialiser le tableau. Il existe plusieurs instructions ASM qui permettent de faire la même chose et même plusieurs façon de les utiliser : certaines méthodes / certaines instructions sont plus rapides que d'autres.
De même, cela dépend si le tableau contient les mêmes valeurs. Si c'est le cas, il y a moyen d'optimiser l'initialisation.
Concernant le temps de création d'un tableau, c'est autre chose.
Un tableau local non statique est créé sur la pile. Le tableau est juste un espace sur la pile, dont la taille dépend (forcément) de la taille du tableau : le registre EBP utilisé avec un index (EXP+xx) permet d'accéder à un élément du tableau ou à un autre objet local.
Les tableaux locaux statiques et les tableaux globaux sont créés ailleurs que sur la pile. Ils sont créés avec le programme et détruits avec : on ne peut pas les détruire lors de l'exécution.
Par contre, si le tableau est créé sur le tas, c'est différent, car on peut le créer et le détruire quand on veut. La fonction d'allocation doit donc gérer les zones libres et celles déjà occupées (c'est effectué grâce à une liste chainée d'après ce que j'ai compris), c'est donc plus gourmand en ressources puisqu'il faut chercher là où il y a de la place.
Partager