有没有更有效的方法来计算减法表达式的绝对值

时间:2014-12-09 06:47:38

标签: c# .net performance subtraction absolute-value

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

有更有效的方法来做到这一点,还是最有效的方式?

1 个答案:

答案 0 :(得分:2)

在确切知道问题所在之前,请不要对代码进行微观优化。

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

如果您使用的是Int32值且输入不是边界值,那么您可以使用此

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

但是我建议你忘掉它的全部内容,分析你的应用程序,你会看到真正的问题是在其他地方没有调用Math.Abs,你应该首先让你的代码可读,然后在你证明之后调整性能问题他们真的是性能问题!

  

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

请先阅读this