fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5.  
  6. public class Test
  7. {
  8. public static void Main()
  9. {
  10. var sw = new Stopwatch();
  11. int many = 10000000;
  12. var manyDoubles = new List<double>(many);
  13. var range = Enumerable.Range(1, many).Select(i => (double)i);
  14.  
  15. var orderFirst = manyDoubles.OrderBy(d => d).Distinct();
  16. sw.Start();
  17. manyDoubles.AddRange(orderFirst);
  18. sw.Stop();
  19. Console.WriteLine("Time for first orderby then distinct: {0}", sw.Elapsed.ToString());
  20. manyDoubles = new List<double>(many);
  21.  
  22. var distinctFirst = manyDoubles.Distinct().OrderBy(d => d);
  23. sw.Reset();
  24. sw.Start();
  25. manyDoubles.AddRange(distinctFirst);
  26. sw.Stop();
  27. Console.WriteLine("Time for first distinct then orderby: {0}", sw.Elapsed.ToString());
  28. }
  29. }
Success #stdin #stdout 0.17s 209984KB
stdin
Standard input is empty
stdout
Time for first orderby then distinct: 00:00:00.0045379
Time for first distinct then orderby: 00:00:00.0013316