Iva*_*kin 8 .net c# optimization performance jit
我在几个开源项目中遇到了非最佳代码,当程序员不考虑他们使用的是什么时.
两种情况之间的性能差异高达10倍,因为Math.Pow在内部使用Exp和Ln函数,在这个答案中如何解释.
在大多数情况下(通常具有较小的功率),通常的乘法优于供电,但最好的是通过平方算法的Exponentation.
因此,我认为编译器或JITter必须使用权限和其他功能执行此类优化.为什么还没有介绍?我对吗?
阅读你再次引用的anwser,它清楚地表明CRT使用了pow()微软从英特尔购买的功能.比如你看到使用Math.Log和Math.Exp是一个例子文章的作者在编程的书已经找到.
一般取幂方法的"问题"在于它们的构建可以为所有情况产生最准确的结果.这通常会导致某些情况的次优性能.为了提高这些特定情况的性能,必须添加条件逻辑,这会导致所有情况下的性能损失.因为在没有该Math.Pow方法的情况下,对值进行平方或立方化是很容易编写的,所以不需要优化这些情况并且为所有其他情况承担额外的损失.