for语句嵌套循坏性能的剖析_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > for语句嵌套循坏性能的剖析

for语句嵌套循坏性能的剖析

 2015/2/2 19:17:45  Jackbase  程序员俱乐部  我要评论(0)
  • 摘要:日常工作中,处理数据难免会遇到遍历,for循环可能是我们用的比较多的了。本节就来探讨下for语句嵌套循环的性能,猜想下面两个语句的性能。语句1for(i=0;i<1000000;i++){for(j=0;j<100;j++){expression;}}语句2for(i=0;i<100;i++){for(j=0;j<1000000;j++){expression;}}乍一看,感觉两个嵌套循环执行的次数都是一样的,那么他们的时间复杂度是一样的吗?让我们来分析下
  • 标签:for

日常工作中,处理数据难免会遇到遍历,for循环可能是我们用的比较多的了。本节就来探讨下for语句嵌套循环的性能,猜想下面两个语句的性能。

class="T2">语句1

for ( i= 0;  i < 1000000;  i++)
{
for (j =0; j < 100; j++) { expression; }
}

语句2

for ( i= 0;  i < 100;  i++)
{
for (j =0; j < 1000000; j++) { expression; }
}

乍一看,感觉两个嵌套循环执行的次数都是一样的,那么他们的时间复杂度是一样的吗?让我们来分析下,语句1外层循环执行了1000000次,内层循环执行了1000000*100次,而语句2外层循环执行了100次,内层循环也执行了1000000*100次。那么,既然内层执行的次数都一样,外层是不是执行的越少越好呢?让我们写代码认证下。

验证代码

        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            for (int i = 0; i < 1000000; i++)
            {
                for (int j = 0; j < 100; j++)
                {
                    // expression;
                }
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);

            sw.Reset();

            sw.Start();
            for (int i = 0; i < 100; i++)
            {
                for (int j = 0; j < 1000000; j++)
                {
                    // expression;
                }
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);
        }

验证截图

得出结论,对于for语句的嵌套循环,总循环次数相等,外层循环越小越好。个人拙见,工作中具体情况具体对待...

 

上一篇: 360周鸿祎对话未来学家库兹韦尔:造物主是个程序员 下一篇: 没有下一篇了!
发表评论
用户名: 匿名