测试代码
private static void Test1(int count) { int s; List<int> list = new List<int>(); for (int i = 0; i < 10000; i++) { list.Add(i); } Console.WriteLine("这是测试for/linq/foreach效率开始"); DateTime d1 = DateTime.Now; for (int i = 0; i < count; i++) { var roleQuery = from r in list where r == 3500 select r; foreach (var role in roleQuery) { s = role; } Console.WriteLine("测试Linq第" + i +"次"); } DateTime d2 = DateTime.Now; DateTime d3 = DateTime.Now; for (int c = 0; c < count; c++) { foreach (int role in list) { if (role == 350) { s = role; } } Console.WriteLine("测试foreach第" + c + "次"); } DateTime d4 = DateTime.Now; DateTime d5 = DateTime.Now; for (int c = 0; c < count; c++) { for (int i = 0; i < list.Count; i++) { if (list[i] == 350) { s = list[i]; } } Console.WriteLine("测试for第" + c + "次"); } DateTime d6 = DateTime.Now; DateTime d7 = DateTime.Now; for (int c = 0; c < count; c++) { int i=0; while ( i<list.Count) { if (list[i] == 350) { s = list[i]; } i++; } Console.WriteLine("测试while第" + c + "次"); } DateTime d8 = DateTime.Now; Console.WriteLine("linq测试时长为:" + (d2 - d1).ToString()); Console.WriteLine("foreach测试时长为:" + (d4 - d3).ToString()); Console.WriteLine("for测试时长为:" + (d6 - d5).ToString()); Console.WriteLine("while测试时长为:" + (d8 - d7).ToString()); Console.Read(); }
调用代码
static void Main(string[] args) { //NewMethod(); int count = 100000000; Test1(count / 1000); //太大了时间太长 //Test2(count); }
执行结果