fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5.  
  6. public class Test
  7. {
  8. public static void Main()
  9. {
  10. var data = new List<string>[20];
  11. var rnd = new Random();
  12. var sw = new Stopwatch();
  13. sw.Start();
  14.  
  15. for (var i = 0; i < 20; i++) {
  16. var size = rnd.Next(50000, 100000);
  17. data[i] = new List<string>(size);
  18. for (var j = 0; j < size; j++) {
  19. var len = rnd.Next(3, 10);
  20. var s = "";
  21. for (var k = 0; k < len; k++)
  22. s += (char)rnd.Next(97, 123);
  23. data[i].Add(s);
  24. }
  25. }
  26. sw.Stop();
  27. Console.WriteLine("Data Gen: " + sw.ElapsedMilliseconds + " ms");
  28. Console.WriteLine();
  29.  
  30. var t = 0L;
  31. for (var i = 1; i <= 10; i++) {
  32. sw.Reset();
  33. sw.Start();
  34.  
  35. Func<string, bool> filter = (string s) => s.Contains("gaba");
  36.  
  37. var result = data.SelectMany (d => d).Where (filter).Distinct().Take(10).ToArray();
  38. sw.Stop();
  39.  
  40. Console.WriteLine("Iteration #" + i + ": " + sw.ElapsedMilliseconds + " ms (" + result.Length + ")");
  41. t += sw.ElapsedMilliseconds;
  42. }
  43. Console.WriteLine("Method 1 Average: " + (t / 10) + " ms");
  44. Console.WriteLine();
  45.  
  46. t = 0;
  47. for (var i = 1; i <= 10; i++) {
  48. sw.Reset();
  49. sw.Start();
  50.  
  51. Func<string, bool> filter = (string s) => s.Contains("gaba");
  52.  
  53. var result = data.SelectMany (d => d.Where (filter)).Distinct().Take(10).ToArray();
  54. sw.Stop();
  55.  
  56. Console.WriteLine("Iteration #" + i + ": " + sw.ElapsedMilliseconds + " ms (" + result.Length + ")");
  57. t += sw.ElapsedMilliseconds;
  58. }
  59. Console.WriteLine("Method 2 Average: " + (t / 10) + " ms\n");
  60.  
  61. }
  62. }
Success #stdin #stdout 4.5s 25768KB
stdin
Standard input is empty
stdout
Data Gen: 2358 ms

Iteration #1: 139 ms (10)
Iteration #2: 125 ms (10)
Iteration #3: 126 ms (10)
Iteration #4: 126 ms (10)
Iteration #5: 127 ms (10)
Iteration #6: 126 ms (10)
Iteration #7: 126 ms (10)
Iteration #8: 127 ms (10)
Iteration #9: 127 ms (10)
Iteration #10: 125 ms (10)
Method 1 Average: 127 ms

Iteration #1: 79 ms (10)
Iteration #2: 79 ms (10)
Iteration #3: 79 ms (10)
Iteration #4: 78 ms (10)
Iteration #5: 78 ms (10)
Iteration #6: 79 ms (10)
Iteration #7: 79 ms (10)
Iteration #8: 78 ms (10)
Iteration #9: 78 ms (10)
Iteration #10: 78 ms (10)
Method 2 Average: 78 ms