Quelles méthodes mathématiques sont mises en œuvre dans le matériel FPU avec .net?

StackOverflow https://stackoverflow.com/questions/1913301

  •  19-09-2019
  •  | 
  •  

Question

Quelqu'un sait quelles méthodes mathématiques sont implemnted par le matériel du processeur pour .net? Par exemple, j'ai un algorithme qui fait beaucoup d'utilisation de atan. Je peux facilement écrire une table de consultation pour cela, mais si math.net implémente cette aide d'un FPU ou d'autres extensions matérielles, il ne va pas valoir la peine.

Était-ce utile?

La solution

Si oui ou non les méthodes sont mises en œuvre en suivant les instructions du matériel x87 est pas le problème, parce que les instructions de la fonction transcendantale du matériel sont lents.

Le "Intel 64 et IA-32 Architectures optimisation Manuel de référence" (téléchargement ici ) liste fpatan comme ayant un temps d'attente de 150-300 cycles sur le matériel récent. Une mise en œuvre du logiciel bien écrit peut fournir une pleine précision résultat double précision dans le temps beaucoup moins -. En effet, les bibliothèques mathématiques de haute qualité font juste que

Autres conseils

Pourquoi ne pas simplement évaluer votre approche de table de consultation contre le atan () fourni avec .net. Ensuite, vous serez en mesure de dire clairement à quel point une différence de vitesse à l'aide d'une table de consultation fait vraiment.

Armé de cela, vous aurez pas besoin de savoir comment la machine virtuelle sous-jacente fait des choses afin d'identifier la méthode la plus rapide. Vous serez même en mesure de quantifier le gain de vitesse.

Selon ce blog, le compilateur JIT de Microsoft Finalité tirer profit des instructions FPU sur la plate-forme x86:

http://blogs.msdn.com/davidnotario /archive/2004/10/26/247792.aspx

Il est une chose assez élémentaire à faire, puisque FPU ont été la norme sur les processeurs x86 depuis plus d'une décennie.

Avec une petite application de référence, il semble que même si le FPU est utilisé, la performance de Math.atan2 est pas aussi bon que d'une fonction approximisation alternative.

Dans mon simple, de référence, la boucle Math.atan2 est de prendre 8 secondes, alors que la version approximative prend 5,5 secondes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top