OK, disons que 16 bytes sont économisés dans le cas où il est vide. Dans le cas contraire on a un surcout de 8 bytes.
Franchement, ce n'est rien. A moins d'avoir un millier de vecteurs vides en même temps -- mais là cela sent le problème de design ou de choix de structures (typiquement c'est pas le plus adapté aux matrices creuses) -- ce n'est pas un surcout pertinent je trouve. Sans parler que mes vecteurs sont plus souvent pleins que vides, donc je serais en situation de surcout permanent avec un tel choix.
De plus, on perd en perf
* tests de non-nullité systématiques avant utilisation
* new + delete de plus
* potentielles indirections supplémentaires sur accès
Pour le NRVO, il y a toujours le passage par référence si on a peur de l’inapplicabilité du principe avec notre compilo -- le vieux sun CC m'avait d'ailleurs surpris à ce sujet sur des vecteurs et un code pas du tout torturé pour gagner l'optimisation. Et cela dégradera moins les perfs que des allocations dynamiques de vecteurs. (NB: maintenant, cet argument ne va plus tenir ; mais je me répète)
[^] # Re: works for me
Posté par lmg HS (site web personnel) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 1.
OK, disons que 16 bytes sont économisés dans le cas où il est vide. Dans le cas contraire on a un surcout de 8 bytes.
Franchement, ce n'est rien. A moins d'avoir un millier de vecteurs vides en même temps -- mais là cela sent le problème de design ou de choix de structures (typiquement c'est pas le plus adapté aux matrices creuses) -- ce n'est pas un surcout pertinent je trouve. Sans parler que mes vecteurs sont plus souvent pleins que vides, donc je serais en situation de surcout permanent avec un tel choix.
De plus, on perd en perf
* tests de non-nullité systématiques avant utilisation
* new + delete de plus
* potentielles indirections supplémentaires sur accès
Pour le NRVO, il y a toujours le passage par référence si on a peur de l’inapplicabilité du principe avec notre compilo -- le vieux sun CC m'avait d'ailleurs surpris à ce sujet sur des vecteurs et un code pas du tout torturé pour gagner l'optimisation. Et cela dégradera moins les perfs que des allocations dynamiques de vecteurs. (NB: maintenant, cet argument ne va plus tenir ; mais je me répète)