mizuneko
3/19/2015 - 1:45 PM

Measurement.cs

readonly Action<string, Action> _measurement = ((desc, execute) =>
{
    var sw = new Stopwatch();
    sw.Start();
    execute();
    sw.Stop();
    Console.WriteLine("{0}:{1}", desc, sw.Elapsed);
});

var rand = new Random();
var big = new List<string>();
Enumerable.Range(1, 10000000).ForEach(x =>
{
    big.Add(rand.Next().ToString());
});

_measurement("Big Lookup", () =>
{
    var lookup = big.ToLookup(x => x);
    var item = lookup.Where(x => x.Key == "5000000").ToArray();
});

_measurement("Big GroupBy", () =>
{
    var group = big.GroupBy(x => x);
    var item = group.Where(x => x.Key == "5000000").ToArray();
});