Citation:
Envoyé par
sleepless
Je me laisse facilement convaincre par Joel au sujet de l'amitié : c'est plus simple à maintenir sans, et on peut espérer que le compilateur va optimiser. Je trouve ça juste frustrant que ça ne soit pas écrit explicitement dans le code. Il me semble même avoir lu que l'utilisation de "inline" était une simple indication qui n'obligeait en rien le compilateur à inliner quoi que ce soit (je me trompe ?).
Effectivement, le compilateur peut décider de ne pas inliner une fonction s'il est dans l'impossibilité de le faire (ex: il sera incapable d'inliner une fonction récursive ;)) ou si le nombre d'instructions est supérieur à la limite admise (cetains compilateurs permettent de modifier cette limite ;))
Citation:
Sinon, les "vrais compilateurs", c'est lesquels ?
En gros, on peut estimer que tout compilateur postérieur (ou égal) à 2005 peut être considéré comme un "vrai" compilateur.
Si tu te pose la question de savoir pourquoi je parle de l'année 2005, c'est simplement parce que:
- Ce n'est qu'avecTR1 (sorti en 2003) que pas mal de problèmes ont été réglés (entre autres au niveau de la gestion des template et des espaces de noms), sans oublier tous les ajouts qu'il a apportés ;)
- c'est à peu près à cette date que microsoft a complètement changé son fusil d'épaule en ce qui concerne le respect des différentes normes (en fait, c'était un peu plus tôt, mais il a bien fallu le temps que cela se traduise dans les différents outils ;))
Citation:
Par contre, je vais essayer de résister un peu en ce qui concerne la STL. Je m'attendais à ce qu'on m'objecte que le gain de performance ne valait pas le coup par rapport au temps passé à réinventer la roue (et à la débugger).
Attention, il y a aussi de cela ;)
Citation:
Mais certainement pas à ce qu'on me présente l'exercice comme un challenge de haute volée (et donc hors de mes capacités).
Attention, on ne vise pas tes capacités de manière particulière, on vise les capacités de n'importe quel programmeur en général, quel que soit sont niveau de compétences...
Le fait est que même avec un niveau de compétences important, le temps passé sur l'exercice sera important.
Comme ce serait cruellement manquer de modestie de parler de moi, je peux t'assurer que je tiens personnellement Emmanuel pour quelqu'un de particulièrement compétant, pourtant, sa réponse ne laisse aucune place au doute: il y arrivera surement, mais il lui faudra le temps ;)
Citation:
Comment une lib aussi générale et riche en fonctionnalité que la STL peut elle performer mieux que des conteneurs minimalistes et dédiés à une utilisation bien précise ?
Essentiellement parce que le nombre de gens qui posent les yeux dessus est important:
L'implémentation de la STL est toujours le travail d'une équipe, et donc de "compétences croisées". Ne dit on pas qu'il y a toujours plus dans deux têtes que dans une :question: et dans dix, cent ou mille alors :question:
Il faut être conscient que l'on a beau être particulièrement compétent (c'est peut être ton cas :D), il y a toujours des domaines que l'on maitrise moins bien, et que c'est parfaitement normal ;).
Le fait de travailler en équipe permet, tout simplement, de croiser les domaines de compétences et donc d'avoir une chance accrue de voir l'ensemble des domaines profiter d'un niveau de compétence important, alors que c'est purement impossible lorsque tu travailles seul, que ce soit dans ton garage ou ton salon ;)
Citation:
Je vais être têtu, et je promets de revenir d'ici quelques semaines avec un benchmark pour comparer les deux dans le contexte de mon appli.
Voilà une excellente idée ;)
Citation:
Probablement une humiliation publique en perspective,
On n'a pas vraiment l'habitude d'humilier publiquement les gens ici :D
Par contre, si ton bench est effectué correctement (j'ai appris à n'accorder qu'une confiance limitée en un bench que je n'ai pas moi même truqué :D), tu pourra soit profiter de point de vue différents (et donc de nouvelles voies de réflexion :D) soit... faire profiter les autres de tes "idées de génie" :D
Citation:
mais si c'est le cas, au moins ça m'aura vacciné contre l'excès de confiance en moi
Tout de suite les grands mots :D
Citation:
(et ça m'aura fait progresser avec les templates).
Ce qui sera déjà pas si mal, en soit :D
Citation:
Et pour l'implémentation de mon conteneur "dynamique" (si si, un peu!) non, je ne fait pas une allocation à chaque ajout d'un nouvel élément, le résultat serai catastrophique niveau performance. J'utilise une méthode "SetSize()" pour définir la capacité du tableau, et il revient à l'appelant de ne pas changer la taille à tout bout de champ. Concrètement, il est exceptionnel que la taille change en court de route (et ça n'arrive jamais dans la boucle principale).
En fait, quand j'écrivais "tu te retrouvera face à la nécessité d'augmenter la taille", je voulais, bien évidemment, parler de l'implémentation des mécanismes internes à ta classe :D
La gestion de la taille de ton tableau doit, effectivement, être du seul ressort du conteneur :D
Citation:
Envoyé par
sleepless
Hey ! Je n'ai jamais dit que j'espérais faire mieux que la STL dans le cas général, mais seulement dans un cas bien précis.
et on a juste dit que ce ne sera pas évident d'y arriver seul.
Tu y arrivera sans doute, mais le temps que tu aura passé à y arriver (et à acquérir les compétences nécessaires, s'il t'en manque) mérite clairement d'être mis en balance avec le gain que tu peux espérer grâce à l'exercice :aie:
Citation:
D'autre part, les geeks de mon age ont un sous-sol bien à eux :)
et sans doute un bureau confortable, dans la même pièce que la TV :D