黑马程序员技术交流社区

标题: foreach与for,linq to object效率问题 [打印本页]

作者: fcyan86    时间: 2013-5-30 18:03
标题: foreach与for,linq to object效率问题
本帖最后由 fcyan86 于 2013-5-30 21:01 编辑
  1. int[]numbers=new int[10];
  2.             Random rdm=new Random();
  3.             for (int i = 0; i < numbers.Length; i++)
  4.             {
  5.                 numbers[i] = rdm.Next(100);
  6.                 Console.Write(numbers[i]+"\t");
  7.             }
  8.             Console.WriteLine();
  9.             //使用linq查出最大值
  10.             int maxValue1 = numbers.Max(p => p);
  11.             //循环找出最大值
  12.             int maxValue2 = numbers[0];
  13.             foreach (int number in numbers)
  14.             {
  15.                 if (number > maxValue2)
  16.                     maxValue2 = number;
  17.             }
复制代码
在这段代码中,找出最大值那个快一些,还有for与foreach那个快些,用什么方法可以精确的比较出两都的效率

作者: zpzhangwenhan    时间: 2013-5-30 20:17
上代码
  1. //测试代码运行的时间
  2.             Stopwatch sw = new Stopwatch();
  3.             int[]numbers=new int[10];
  4.             Random rdm=new Random();
  5.             for (int i = 0; i < numbers.Length; i++)
  6.             {
  7.                 numbers[i] = rdm.Next(100);
  8.                 Console.Write(numbers[i]+"\t");
  9.             }
  10.             Console.WriteLine();

  11.              sw.Start();
  12.             //使用linq查出最大值
  13.             int maxValue1 = numbers.Max(p => p);
  14.              sw.Stop();
  15.             Console.WriteLine(sw.Elapsed);

  16. sw.Start();
  17.             //循环找出最大值
  18.             int maxValue2 = numbers[0];
  19.             foreach (int number in numbers)
  20.             {
  21.                 if (number > maxValue2)
  22.                     maxValue2 = number;
  23.             }
  24. sw.Stop();
  25.             Console.WriteLine(sw.Elapsed);
复制代码

作者: zpzhangwenhan    时间: 2013-5-30 20:17
本帖最后由 zpzhangwenhan 于 2013-5-30 20:19 编辑

上代码
用这个类,可以运算代码的执行时间
Stopwatch sw = new Stopwatch();
  1.            //测试代码运行的时间
  2.             Stopwatch sw = new Stopwatch();
  3.             int[]numbers=new int[10];
  4.             Random rdm=new Random();
  5.             for (int i = 0; i < numbers.Length; i++)
  6.             {
  7.                 numbers[i] = rdm.Next(100);
  8.                 Console.Write(numbers[i]+"\t");
  9.             }
  10.             Console.WriteLine();

  11.              sw.Start();
  12.             //使用linq查出最大值
  13.             int maxValue1 = numbers.Max(p => p);
  14.              sw.Stop();
  15.             Console.WriteLine(sw.Elapsed);

  16.              sw.Start();
  17.             //循环找出最大值
  18.             int maxValue2 = numbers[0];
  19.             foreach (int number in numbers)
  20.             {
  21.                 if (number > maxValue2)
  22.                     maxValue2 = number;
  23.             }
  24. sw.Stop();
  25.             Console.WriteLine(sw.Elapsed);
复制代码

作者: 袁梦希    时间: 2013-5-30 20:32
.net的兄弟真给力,答题很详细,佩服, 以后有事情   或者没加分 给我留言或者看我的个性签名
作者: fcyan86    时间: 2013-5-30 21:00
回答很给力,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2