Fév 262010
 

Apres avoir lu quelques tutos sur comment optimiser les calculs trigonométriques, j’ai voulu me faire une librairie trigo rapide basée sur une table et là : surprise !

sur un PC récent

matablesin[(int)(angle/deuxpi*tailletable)]

est presque 2 fois plus lent que

sin(angle);

L’explication est toute simple : Les processeurs modernes ont tout le hardware necessaire pour calculer sin et cos, et même les deux en même temps. (instructions assembleur spécialisées)

Remarque : La taille de la table a une influence car il est probable qu’elle soit accédée a peu près alléatoirement. Dans ces conditions les mécaniques de cache et de préchargement de pages ne peuvent pas fonctionner et la lecture en RAM prends finalement plus de temps que de demander le calcul au processeur.

Ce genre de technique reste cependant applicable au calcul de asin et acos qui ne sont pas (encore) accélérés materiellement.

Sorry, the comment form is closed at this time.