En effet, pour gérer plein de petits points, il faut éviter à tout prix une allocation dynamique ! Donc une solution à base de tableaux de taille fixe semble de rigueur. Après, array<array<double, 2>, 2> ou array<double, 4>, je ne sais pas trop, il faudrait faire des tests.
Un autre point où il est possible de gagner du temps avec les petites matrices, c'est en déroulant la boucles. C'est je crois ce ue faisait blitz, mais le site est mort. Si tu as moyen de te procurer C++ template, the complete guide (Jossutis et Vandevorde), la technique est démontrée.
Les autres choses qu'une telle solution peut apporter, c'est une vérification à la compilation des tailles de matrices, éventuellement les expression templates peuvent aussi faire gagner un peu de temps, mais moins que pour les grosses matrices, je pense.
Je viens de rechercher s'il existe des bibliothèques du genre de blitz++, mais encore vivantes, car pour tirer tous les avantages du C++ en terme d'expressivité et de performance, ça demande de mettre en oeuvre des techniques avancées. J'ai trouvé
http://tvmet.sourceforge.net/introduction.html je ne sais pas ce que ça vaut, le projet a l'air à l'arrêt depuis quelque temps aussi.
Autrement, je n'ai pas trop compris pourquoi représenter les points par des matrices et non des vecteurs ?
Partager