値を比較する必要があります。値が 3 以下の場合は何かを行い、値が 4 と 27 の間の場合は別のことを行いますが、値が 28 を超える場合は別のことを行います。多くのリソースを消費しない方法で、if のスイッチの使用を避けることができます?? 約 60k+ の値を比較する必要があります。
質問する
105 次
4 に答える
3
これ以上速いものはないと思います。データがどのように分散されているかを知っていれば、少しスピードアップできるかもしれません。たとえば、ほとんどの値が 27 を超えている場合は、まずその条件を確認するなどです。データが並べ替えられている場合は、それを利用する方法を見つけることもできます。
于 2012-10-07T22:15:51.327 に答える
1
条件演算子 ( ?:
) を使用して、次のようにすることができます。
i = (i <= 3) ? DoSomething() : (i <= 27) ? DoSomething(): DoSomething();
これはさらに圧縮されており、私のコンピューター (6 GB RAM) ではif..else
571400 ナノ秒かかり、ステートメントは 407400 ナノ秒かかるため、if..else
ステートメントは高速ですが、条件演算子はより圧縮されています。
于 2012-10-07T22:48:20.823 に答える
1
クイックソートを使用して値をソートします。この実装により、if 比較の量が削減されますが、おそらく高速ではありません。
于 2012-10-07T22:18:52.683 に答える
1
私はこのようなチェックの時間を計った:
if (i <= 3) {
DoSomething();
} else if (i <= 27) {
DoSomethingElse();
} else {
DoSomethingElse();
}
これを 60000 回実行すると、私のコンピューターでは約 35 マイクロ秒かかります。何をしていてもそれが長すぎる場合は、別の方法を試すのではなく、自分がしていることを再考する必要があります.
于 2012-10-07T22:27:03.803 に答える