题
有谁知道什么数学方法由处理器.NET的硬件implemnted?例如,我有一个算法,使得大量使用反正切的。我可以很容易地写出一个查找表,但是如果math.net实现此使用FPU或其它硬件扩展,它不会是值得的。
解决方案
无论是否方法使用的x87硬件指令实现不是问题,因为硬件超越函数的指令是缓慢的。
在 “英特尔64和IA-32架构优化参考手册”(下载此处一>)列出fpatan
为具有最近的硬件150-300周期的等待时间。一个写得很好的软件实现实质上可以更短的时间提供全精度的双精度结果 - 实际上,高品质的数学库,做到这一点。
其他提示
为什么不只是基准对ATAN()提供.NET的查表的方法。然后,你就可以使用查表真叫明确地告诉多大的速度差异。
与武装,你不需要知道底层VM怎么做,以确定最快的方法事情。你甚至可以量化的加速。
根据这一博客,微软的JIT编译器的不的走在x86平台上的优势的FPU指令:
http://blogs.msdn.com/davidnotario /archive/2004/10/26/247792.aspx
这是做一个非常基本的东西,因为的FPU已经在标准x86处理器了十多年了。
通过一个小的基准测试应用程序,似乎即使使用的FPU,Math.Atan2的性能并不作为一种替代approximisation功能一样好。
在我的简单的基准,所述Math.Atan2循环正在8秒,而近似版本正在5.5秒。
不隶属于 StackOverflow