using System.Collections.Generic;
using System.Diagnostics;
var dummyDataForWarmup = Enumerable.Range(90, 20).ToList();
var data = Enumerable.Range(0, 400000).Select(x => rnd.Next(0, 200)).ToList();
Console.WriteLine("Warmup:");
Console.WriteLine(TestLINQ(dummyDataForWarmup).ToString("G"));
Console.WriteLine(TestForeach(dummyDataForWarmup).ToString("G"));
Console.WriteLine(TestFor(dummyDataForWarmup).ToString("G"));
Console.WriteLine("Real run:");
Console.WriteLine(TestLINQ(data).ToString("G"));
Console.WriteLine(TestForeach(data).ToString("G"));
Console.WriteLine(TestFor(data).ToString("G"));
public static TimeSpan TestLINQ(IList<int> data)
GC.WaitForPendingFinalizers();
var sw = Stopwatch.StartNew();
var query = from num in data where num < 100 select num;
var count = query.Count();
Console.WriteLine("TestLINQ count: " + count);
public static TimeSpan TestForeach(IList<int> data)
GC.WaitForPendingFinalizers();
var sw = Stopwatch.StartNew();
var searchResults = new List<int>(data.Count);
var count = searchResults.Count;
Console.WriteLine("TestForeach count: " + count);
public static TimeSpan TestFor(IList<int> data)
GC.WaitForPendingFinalizers();
var sw = Stopwatch.StartNew();
var searchResults = new List<int>(data.Count);
for (int index = 0; index < data.Count; index++)
searchResults.Add(data[index]);
var count = searchResults.Count;
Console.WriteLine("TestFor count: " + count);