.NET框架的Math函数大部分都是基于双精度浮点数运算,没有单精度(float)重载。在高性能场景下使用单精度数据时,这会导致不必要的强制转换,并且计算函数的精度比所需的更高,从而影响性能。是否有任何方法可以避免一些额外的CPU开销?例如,是否有一个开源的数学库,具有直接调用底层FPU指令的float重载?(我的理解是,这需要CLR的支持)。实际上,我不确定现代CPU是否甚至具有单精度指令。这个问题部分地启发了这个有关优化sigmoid函数的问题:Math optimization in C#。
Sin(double)
的性能影响。内部函数声明为"extern",但不是P/Invoke - 它们的本机代码由JIT本身处理,以使它们尽可能高效。 - Sam Harwell