Sur un exemple comme le tien, l'utilisation d'un pool permet d'exploser les perfs de OOC très simplement.
Il est incohérent de critiquer un microbenchmark « non réaliste » et d'expliquer ensuite que le C(++) permet des tas de micro-optimisations coûteuses en développement et en maintenance, comme si c'était « réaliste » de faire ce genre de micro-optimisations sur des applications de la vraie vie.
On peut tout faire en C(++), certes, le truc c'est que pendant que tu passeras ton temps à écrire des tas de micro-optimisations (allocateurs spécialisés, pools d'objets pré-alloués...) et à traquer les inévitables fuites mémoire liées à une complication croissante des schémas d'allocation, le développeur utilisant un langage plus haut niveau aura écrit un logiciel à la couverture fonctionnelle trois fois plus grande, et qui apporte plus aux utilisateurs.
D'autant, évidemment, que rien n'empêche ooc d'intégrer ce genre de micro-optimisations de façon transparente sans que le programmeur ait à lever le petit doigt ; c'est ce que fait Python avec beaucoup de petits objets par exemple.
[^] # Re: Rapidité du C ... et ramasse-miettes ?
Posté par Antoine . En réponse à la dépêche Le language de programmation ooc sorti en version 0.2. Évalué à 9.
Il est incohérent de critiquer un microbenchmark « non réaliste » et d'expliquer ensuite que le C(++) permet des tas de micro-optimisations coûteuses en développement et en maintenance, comme si c'était « réaliste » de faire ce genre de micro-optimisations sur des applications de la vraie vie.
On peut tout faire en C(++), certes, le truc c'est que pendant que tu passeras ton temps à écrire des tas de micro-optimisations (allocateurs spécialisés, pools d'objets pré-alloués...) et à traquer les inévitables fuites mémoire liées à une complication croissante des schémas d'allocation, le développeur utilisant un langage plus haut niveau aura écrit un logiciel à la couverture fonctionnelle trois fois plus grande, et qui apporte plus aux utilisateurs.
D'autant, évidemment, que rien n'empêche ooc d'intégrer ce genre de micro-optimisations de façon transparente sans que le programmeur ait à lever le petit doigt ; c'est ce que fait Python avec beaucoup de petits objets par exemple.