2

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

有没有更有效的方法来做到这一点,或者它是最有效的方法?

4

1 回答 1

2

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

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

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

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

但我建议你忘记这一切,分析你的应用程序,你会发现真正的问题不在调用的地方Math.Abs,你应该总是先让你的代码可读,然后在证明它们确实是性能问题后调整性能问题!

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

请读这个

于 2014-12-09T07:42:41.263 回答