using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
public class Test
{
public static void Main()
{
var data = new List<string>[20];
var rnd = new Random();
var sw = new Stopwatch();
sw.Start();
for (var i = 0; i < 20; i++) {
var size = rnd.Next(50000, 100000);
data[i] = new List<string>(size);
for (var j = 0; j < size; j++) {
var len = rnd.Next(3, 10);
var s = "";
for (var k = 0; k < len; k++)
s += (char)rnd.Next(97, 123);
data[i].Add(s);
}
}
sw.Stop();
Console.WriteLine("Data Gen: " + sw.ElapsedMilliseconds + " ms");
Console.WriteLine();
var t = 0L;
for (var i = 1; i <= 10; i++) {
sw.Reset();
sw.Start();
Func<string, bool> filter = (string s) => s.Contains("gaba");
var result = data.SelectMany (d => d).Where (filter).Distinct().Take(10).ToArray();
sw.Stop();
Console.WriteLine("Iteration #" + i + ": " + sw.ElapsedMilliseconds + " ms (" + result.Length + ")");
t += sw.ElapsedMilliseconds;
}
Console.WriteLine("Method 1 Average: " + (t / 10) + " ms");
Console.WriteLine();
t = 0;
for (var i = 1; i <= 10; i++) {
sw.Reset();
sw.Start();
Func<string, bool> filter = (string s) => s.Contains("gaba");
var result = data.SelectMany (d => d.Where (filter)).Distinct().Take(10).ToArray();
sw.Stop();
Console.WriteLine("Iteration #" + i + ": " + sw.ElapsedMilliseconds + " ms (" + result.Length + ")");
t += sw.ElapsedMilliseconds;
}
Console.WriteLine("Method 2 Average: " + (t / 10) + " ms\n");
}
}