这个问题几乎说明了一切。目前,我正在使用Math.Abs(a - b)计算减法表达式的绝对值,例如5 - 1010 - 5都返回5

有没有更有效的方法可以做到这一点,还是最有效的方法?

最佳答案

在您确切知道问题出在哪里之前,请不要对代码进行微优化。

您可以实现自己,并使其成为内联函数,以使用MethodImplAttribute降低函数调用的成本。

如果您使用的是Int32值,而您的输入不是碰巧是边界值,则可以使用此值

Abs(x) = (x ^ (x >> 31)) - (x >> 31)


但是我建议您忘记所有这些,配置您的应用程序,您会发现真正的问题出在调用Math.Abs之外的其他地方,应该始终使代码可读,然后在证明它们确实是性能之后,对性能问题进行调整问题!


  程序员浪费大量时间思考或担心
  关于他们程序中非关键部分的速度,以及这些
  尝试提高效率实际上会产生严重的负面影响
  考虑调试和维护。我们应该忘记小
  效率,大约有97%的时间:过早的优化是
  万恶之源。然而,我们不应该放弃我们的机会
  临界3%。
  (DonaldKnuth的论文“ StructuredProgrammingWithGoToStatements”)


请阅读this

10-08 18:50