这个问题几乎说明了一切。目前,我正在使用Math.Abs(a - b)
计算减法表达式的绝对值,例如5 - 10
,10 - 5
返回5
。
有没有更有效的方法来做到这一点,或者它是最有效的方法?
这个问题几乎说明了一切。目前,我正在使用Math.Abs(a - b)
计算减法表达式的绝对值,例如5 - 10
,10 - 5
返回5
。
有没有更有效的方法来做到这一点,或者它是最有效的方法?
在您确切知道问题出在哪里之前,请不要对您的代码进行微优化。
您可以自己实现一个并使其成为内联函数,以使用MethodImplAttribute降低函数调用的成本。
如果您使用 Int32 值并且您的输入不是边界值,那么您可以使用它
Abs(x) = (x ^ (x >> 31)) - (x >> 31)
但我建议你忘记这一切,分析你的应用程序,你会发现真正的问题不在调用的地方Math.Abs
,你应该总是先让你的代码可读,然后在证明它们确实是性能问题后调整性能问题!
程序员浪费大量时间来思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,比如大约 97% 的时间:过早优化是万恶之源。然而,我们不应该放弃那关键的 3% 的机会。
(DonaldKnuth 的论文“StructuredProgrammingWithGoToStatements”)
请读这个