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 に答える