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