using System.Diagnostics;
using System.Collections.Generic;
Number = s.GetHashCode();
private static List<string> WithoutLinq(List<Test> input)
List<string> output = new List<string>();
private static List<string> WithLinq(List<Test> input)
return (from x in input select x.Value).ToList();
private static void Optimal(List<Test> input, List<string> output)
private static void Benchmark(Action act, int iterations)
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < iterations; i++)
Console.WriteLine((sw.ElapsedTicks).ToString());
private static Random random = new Random();
public static string RandomString(int length)
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
public static void Main(string[] args)
List<string> forOptimal = new List<string>();
List<Test> inputs = new List<Test>();
const int testInputNum = 100;
for (int i = 0; i < testInputNum; i += 1)
inputs.Add(new Test(RandomString(5)));
Benchmark(() => { List<string> o = WithLinq(inputs); }, 1000);
Benchmark(() => { List<string> o = WithoutLinq(inputs); }, 1000);
Benchmark(() => { Optimal(inputs, forOptimal); }, 1000);