2017-01-25 4 views
0

下記の2つの注文方法に違いはありますか?他のものよりも優れていますか?2つの可能なOrderBy

List<int> nums = new List<int>{ 5, 7, 6, 15, 1, 3 }; 
var sort1 = nums.OrderByDescending(i => i); 
var sort2 = nums.OrderBy(i => -i); 
+3

「どうすればいい?もっと早く?少ないメモリ使用量? CPU使用量は少ないですか?最初のものは、あなたが期待していることがより明白です。 –

+0

はい、そういった点です。 – NotADeveloper

+0

あなたは1つを選ぶ必要があります。今、答えの正しさを判断するための客観的基準がないため、あなたの質問は「意見に基づいて」表示されます。また、これらのパフォーマンス面を自分でテストすることもできます。孤立して、最初のものは高速ですが、より多くのCPUを必要とするかもしれません。実際のアプリケーションでは、実際のデータでは、2番目の方が高速ですが、より多くのメモリが必要になる可能性があります。あなたの質問から2番目の質問を削除することをお勧めします。 –

答えて

10

リストにint.MinValueが含まれていると、コーナーケースで異なる結果が生じることがあります。

List<int> nums = new List<int> { int.MinValue, 5, 7, 6, 15, 1, 3 }; 

sort1を試してみてくださいしかし
sort2-2147483648, 15, 7, 6, 5, 3, 1で、15, 7, 6, 5, 3, 1, -2147483648です。

int a = int.MinValue; 
if (a == -a) 
    Console.WriteLine("a == -a"); 

プリントa == -a

理由は、オーバーフローです。

関連する問題